MySQL数据库服务器成功启动后,可以通过多种不同的方式进行连接。连接方式主要有:本地连接、远程连接和安全连接。下面通过具体的步骤来演示如何使用它们。
视频讲解如下:
一、本地连接
(1)在CentOS的命令终端中直接输入下面的命令,并使用root用户登录MySQL,输入“/usr/local/mysql/data/error.log”中的临时密码。
代码语言:sql复制mysql -uroot -p
(2)修改MySQL root用户的密码。
代码语言:sql复制mysql> alter user 'root'@'localhost' identified by 'Welcome_1';
提示:这里将root用户密码修改为了“Welcome_1”。
(3)下面的语句将设置用户root远程登录。
代码语言:sql复制mysql> create user 'root'@'%' identified by 'Welcome_1';
mysql> grant all on *.* to 'root'@'%';
mysql> flush privileges;
二、远程连接
这里我们创建一个新的用户“user001”,并且允许该用户远程登录后只能操作系统的“mysql”数据库。
(1)创建用户“user001”,密码是“Welcome_1”。
代码语言:sql复制mysql> create user 'user001'@'%' identified by 'Welcome_1';
(2)为用户“user001”授权。
代码语言:sql复制mysql> grant all on mysql.* to 'user001'@'%';
mysql> flush privileges;
(3)使用root用户查看系统的“user”表。
代码语言:sql复制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的安全连接。
代码语言:sql复制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的安全连接。
代码语言:sql复制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的安全连接。
代码语言:sql复制mysql> create user 'user002'@'%' identified by 'Welcome_1';
mysql> grant all on *.* to 'user002'@'%';
mysql> alter user 'user002'@'%' require ssl;
(4)查看是否开启强制用户使用SSL。
代码语言:sql复制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。
代码语言:sql复制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的安全连接。
代码语言:sql复制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