【赵渝强老师】MySQL的连接方式

2024-08-12 15:34:22 浏览数 (1)

  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

0 人点赞