MySQL数据库服务器成功启动后,可以通过多种不同的方式进行连接。连接方式主要有:本地连接、远程连接和安全连接。下面通过具体的步骤来演示如何使用它们。
视频讲解如下:
一、本地连接
(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; # 输出的信息如下: +-----------+------------------+ | host | user | +-----------+------------------+ | % | root | | % | user001 | | localhost | mysql.infoschema | | localhost | mysql.session | | localhost | mysql.sys | | localhost | root | +-----------+------------------+
(4)使用root用户查看系统的“db”表。
mysql> use mysql; mysql> select host,user,db from db where user='user001'; # 输出的信息如下: +------+---------+-------+ | host | user | db | +------+---------+-------+ | % | user001 | mysql | +------+---------+-------+
三、安全连接
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