MySQL简介和环境搭建
MySQL是一种开源的关系型数据库管理系统(RDBMS),最初由瑞典MySQL AB公司开发,目前属于Oracle旗下产品。MySQL是当下最流行的RDBMS之一,在互联网领域也是应用最广泛的数据库。MySQL采用了双授权政策,分为社区版和企业版。MySQL社区版由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,很多中小型网站都会选择MySQL社区版作为网站的数据库。
MySQL属于数据库服务器软件,我们的应用程序相当于客户端,客户端通过TCP网络协议访问MySQL服务器,实际开发中通常会使用JDBC、ODBC或者驱动包来使用代码操作数据库。MySQL使用C/C++编写,支持大多数主流操作系统平台,同时内置多种高性能存储引擎满足我们不同的业务需求。
官方文档
官方文档:https://dev.mysql.com/doc/
MySQL有详细的官方文档,文档里包括大量说明和例子程序,非常有参考价值。对于一些技术细节我们不可能全部记住,这时就应该查阅文档。
关于GPL授权和商业授权的说明
如果我们使用了MySQL的源码或将MySQL嵌入到我们的程序打包发布,这时需要考虑授权问题。MySQL有GPL授权和商业授权两种政策,这意味着我们的程序必须遵循GPL协议开源,或者购买昂贵的商业授权。
但大部分情况下,我们的程序和MySQL之间是通过网络交互的,我们的客户购买我们的软件,并在他们的服务器上免费从MySQL官网下载安装MySQL服务器,我们的软件只是使用MySQL服务器存储数据。PHP语言实现了MySQL驱动,PHP是可以随意使用的,至于Java则拥有JDBC规范,MySQL的Java驱动只是一个实现,其他许多语言也都是类似情况,在这种场景下,我们不需要开源我们的软件或支付任何费用。
安装MySQL软件
我们可以在Linux或Windows下安装MySQL软件,也可以直接使用Docker部署MySQL,下面我们简单介绍这几种方式。
在Ubuntu Linux下安装MySQL
以Ubuntu Server 22.04为例,下我们直接从APT源安装即可。
apt install mysql-server
安装完成后,可以使用mysql --version查看MySQL版本。

在早期MySQL版本或某些Linux发行版中,安装过程可能需要我们输入root用户的密码。在最新的Ubuntu22.04下则有些不同,安装过程中我们不需要输入密码,安装完成后会在/etc/mysql/debian.cnf生成debian-sys-maint用户和随机密码,该文件必须拥有root权限才能查看。
debian-sys-maint顾名思义是一个维护账号,我们需要先用这个账号登录MySQL再修改root密码,以及进行建立其他用户等操作。具体来说,需要我们执行以下命令修改root密码,这里我们将密码修改为root(注意:不要在生产环境使用弱口令)。
alter user 'root'@'localhost' identified with mysql_native_password by 'root';
设置完成后,执行以下命令刷新用户和权限信息。
flush privileges;
此时我们就可以使用root用户登录MySQL服务器了。不过此时我们只能在localhost下连接MySQL服务器,默认配置下无法通过网络远程连接。如果需要开启远程网络连接,我们首先要编辑/etc/mysql/mysql.conf.d/mysqld.cnf,修改其中bind-address和mysqlx-bind-address为0.0.0.0。
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 0.0.0.0
mysqlx-bind-address = 0.0.0.0
编辑完成后重启MySQL服务。
systemctl restart mysql
重启完成后我们还需要在MySQL中修改当前用户使其支持远程连接或者创建支持远程连接的用户。下面例子我们直接将root用户的host字段设置为%,使得该用户支持任意主机远程连接(其中百分号%表示支持任意主机,host也可以指定为某个IP地址或类似192.168.1.%的通配符形式)。
update user set host = '%' where user = 'root';
flush privileges;
此时就可以使用客户端远程连接到MySQL服务器了。
使用Docker部署MySQL
无论Windows还是Linux下的MySQL安装版都比较庞大,安装过程需要修改配置、注册系统服务等操作。如果MySQL仅用于开发环境,我们通常没必要使用安装版,这种场景下用Docker部署即可,这样涉及到安装和服务启停、删除等操作都非常方便。
首先下载最新版MySQL镜像。
docker pull mysql:latest
下面命令运行MySQL并映射到服务端口到主机3306端口,数据卷等配置使用默认即可。
docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql:latest
命令中我们配置了-e MYSQL_ROOT_PASSWORD=root,该-e参数通过环境变量指定了MySQL的root用户密码为root(注意:不要在生产环境使用弱口令)。
使用客户端连接MySQL
使用MySQL客户端命令行
在Linux或Windows下使用安装版MySQL安装后,也会一同安装MySQL的客户端命令行工具。执行以下命令可以使用mysql命令行工具连接数据库服务器。
mysql -u<用户名> -p
然后输入密码就可以登入MySQL数据库了。

-u指定登入的用户-p要求输入密码
实际上MySQL命令行是功能最为强大的客户端,我们可以进行SQL语句增删改查或是管理数据库等诸多操作,不过使用起来不是很方便。开发环境下我们可以使用诸多图形化工具,不仅可以执行SQL命令,还能可视化浏览数据等。
注意:Linux下命令行默认使用UTF-8编码,但Windows下由于cmd默认是GBK的,如果出现乱码情况,可能需要调整一下MySQL客户端命令行的编码才能正常使用。
使用Navicat
Navicat是一款强大的数据库可视化工具。实际开发中,为了节省时间提高调试效率,我们通常都不是在命令行中编写SQL语句,而是直接使用Navicat这类工具查看和编辑数据。此外,Navicat还有很强的数据库设计功能和数据库管理功能,相比直接使用命令行操作数据库要方便很多。

注意:Navicat是付费软件,Premium版售价6500RMB。
使用MySQL Workbench
MySQL Workbench是一个专为MySQL设计的ER/数据库建模工具,在MySQL官网可以免费下载到社区版MySQL Workbench CE。

注意:MySQL Workbench一般使用最新版即可,Workbench8.x也支持连接到MySQL5.7,除非你使用的数据库版本更低(MySQL5.6及以下)。