头图

  MySQL数据库服务器成功启动后,可以通过多种不同的方式进行连接。连接方式主要有:本地连接、远程连接和安全连接。下面通过具体的步骤来演示如何使用它们。
  视频讲解如下:
https://www.bilibili.com/video/BV1Tm421L7pd/?aid=1605516765&c...

一、本地连接

(1)在CentOS的命令终端中直接输入下面的命令,并使用root用户登录MySQL,输入“/usr/local/mysql/data/error.log”中的临时密码。

mysql -uroot -p

(2)修改MySQL root用户的密码。

mysql> alter user 'root'@'localhost' identified by 'Welcome_1';
提示:这里将root用户密码修改为了“Welcome_1”。

(3)下面的语句将设置用户root远程登录。

mysql> create user 'root'@'%' identified by 'Welcome_1';
mysql> grant all on *.* to 'root'@'%';
mysql> flush privileges;

二、远程连接

  这里我们创建一个新的用户“user001”,并且允许该用户远程登录后只能操作系统的“mysql”数据库。
(1)创建用户“user001”,密码是“Welcome_1”。

mysql> create user 'user001'@'%' identified by 'Welcome_1';

(2)为用户“user001”授权。

mysql> grant all on mysql.* to 'user001'@'%';
mysql> flush privileges;

(3)使用root用户查看系统的“user”表。

mysql> use mysql;
mysql> select host,user from user;

三、安全连接

  MySQL默认的数据通道是不加密的,在一些安全性要求特别高的场景下,我们需要配置MySQL端口为SSL,使得数据通道加密处理,避免敏感信息泄漏和被篡改。当启用MySQL SSL之后,由于每个数据包都需要加密和解密,将对MySQL数据库的性能造成严重的影响。

提示:默认情况下,MySQL 8已经启用SSL的安全连接。如果没有启用SSL安全连接,MySQL提供了一个实用程序命令“mysql_ssl_rsa_setup”帮助启用和配置SSL的安全连接以及需要的证书。

  下面通过具体的步骤来演示如何使用MySQL的SSL安全连接。
(1)使用MySQL的root用户登录,执行“status”语句检查是否启用了SSL的安全连接。

mysql> status;
# 输出的信息如下:
mysql  Ver 8.0.20 for Linux on x86_64 (MySQL Community Server - GPL)
Connection id: 9
Current database:
Current user:     root@localhost
SSL:     Not in use
......
提示:root用户默认是不需要使用SSL的安全连接的。

(2)查看SSL参数状态,查看have_ssl为YES,这表示MySQL已经支持SSL的安全连接。

mysql> show variables like '%ssl%';
#输出的信息如下:
+--------------------+-----------------+
| Variable_name      | Value           |
+--------------------+-----------------+
| have_openssl       | YES             |
| have_ssl           | YES             |
| mysqlx_ssl_ca      |                 |
| mysqlx_ssl_capath  |                 |
| mysqlx_ssl_cert    |                 |
| mysqlx_ssl_cipher  |                 |
| mysqlx_ssl_crl     |                 |
| mysqlx_ssl_crlpath |                 |
| mysqlx_ssl_key     |                 |
| ssl_ca             | ca.pem          |
| ssl_capath         |                 |
| ssl_cert           | server-cert.pem |
| ssl_cipher         |                 |
| ssl_crl            |                 |
| ssl_crlpath        |                 |
| ssl_fips_mode      | OFF             |
| ssl_key            | server-key.pem  |
+--------------------+-----------------+

(3)创建一个用户,要求使用SSL的安全连接。

mysql> create user 'user002'@'%' identified by 'Welcome_1';
mysql> grant all on *.* to 'user002'@'%';
mysql> alter user 'user002'@'%' require ssl;

(4)查看是否开启强制用户使用SSL。

mysql> select user,host,ssl_type,ssl_cipher from mysql.user ;
#输出的信息如下:
+------------------+--------------+----------+------------------------+
| user             | host         | ssl_type | ssl_cipher             |
+------------------+--------------+----------+------------------------+
| mycat            | %            |          | 0x                     |
| root             | %            |          | 0x                     |
| user002          | %            | ANY      | 0x                     |
| myadmin          | 192.168.79.% |          | 0x                     |
| proxysql         | 192.168.79.% |          | 0x                     |
| repl             | 192.168.79.% |          | 0x                     |
| mysql.infoschema | localhost    |          | 0x                     |
| mysql.session    | localhost    |          | 0x                     |
| mysql.sys        | localhost    |          | 0x                     |
| root             | localhost    |          | 0x                     |
+------------------+--------------+----------+------------------------+

(5)客户端使用“user002”通过SSL安全连接方式连接MySQL。

mysql --ssl-ca=/usr/local/mysql/data/ca.pem \
--ssl-cert=/usr/local/mysql/data/client-cert.pem \
--ssl-key=/usr/local/mysql/data/client-key.pem \
-uuser002 -p

(6)输入user002的密码,登录后执行“status”语句检查是否启用了SSL的安全连接。

mysql> status;
#输出的信息如下:
mysql  Ver 8.0.20 for Linux on x86_64 (MySQL Community Server - GPL)
Connection id:         13
Current database:
Current user:           user002@localhost
SSL:                    Cipher in use is TLS_AES_256_GCM_SHA384
Current pager:          stdout

赵渝强老师
36 声望16 粉丝

20年以上的IT行业从业经历,清华大学计算机软件工程专业毕业,京东大学大数据学院院长,Oracle中国有限公司高级技术顾问;曾在BEA、甲骨文、摩托罗拉等世界500强公司担任高级软件架构师或咨询顾问等要职,精通大...