vlambda博客
学习文章列表

链接 MySQL 方式,最后一种肯定让你涨见识

使用过 MySQL 的都知道怎么链接,就是通过客户端软件Navicat,官方的 MySQL WorkBench 或者其他客户端进行链接。本文说四种连接 MySQL 的方式,最后一种可能让你大涨见识。


1. 本地 socket 链接


通过之前文章,大家肯定都知道如何安装了。安装之后也进行了登录,如下方式:

$ mysql -uroot -p  # 回车,输入密码就可登录了

其实完整的连接方式是这样的:

$ mysql [-S /tmp/mysql.sock] -uroot -p # 中括号的内容被省略了

MySQL 默认 socket 的目录是 `/tmp/mysql.sock`,具体可查看配置,如下:

# 首先登录 MySQLmysql> show variables like 'socket';+---------------+-----------------+| Variable_name | Value |+---------------+-----------------+| socket | /tmp/mysql.sock |+---------------+-----------------+1 row in set (0.08 sec)

其实在 MySQL 本机链接还可以将 `-uroot -p` 省略,只需要简单配置即可。打开 `/etc/my.cnf` 输入如下内容:

[client]user=rootpassword=124socket=/tmp/mysql.sock

这样只需要在命令行终端输入:mysql 就可链接了。如下:

$ mysqlWelcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 252Server version: 5.7.36 MySQL Community Server (GPL)
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
(root@localhost) [(none)]> 


2. 通过 TCP/IP 协议远程链接


这个是大家最常用的方式,使用客户端就是这种方式,客户端链接大家都会,我就不演示了,下面我演示一下,如何在 Linux 下远程链接 MySQL,具体如下:

$ mysql -h 192.168.1.100 -P 3306 -uroot -p

这样链接得有个前提,root 用户必须允许远程链接,具体可查看 MySQL 权限一节。


3. 启用 SSL 加密链接 MySQL


现在所有的浏览器访问就建议使用 https,MySQL也不落后,也支持加密链接。具体就是在安装时是否启用了 SSL,如下:

$> bin/mysql_ssl_rsa_setup   # 链接MySQL启用SSL,即加密链接


如何知道链接的 MySQL 是否使用了 SSL 呢?其实在登录 MySQL 之后,输入 `status` 或者 `\s` 可查看链接状态:

(root@localhost) [(none)]> status--------------mysql  Ver 14.14 Distrib 5.7.36, for linux-glibc2.12 (x86_64) using  EditLine wrapper
Connection id: 253Current database:Current user: root@localhostSSL: Not in useCurrent pager: lessUsing outfile: ''Using delimiter: ;Server version: 5.7.36 MySQL Community Server (GPL)Protocol version: 10Connection: Localhost via UNIX socketServer characterset: latin1Db characterset: latin1Client characterset: utf8Conn. characterset: utf8UNIX socket: /tmp/mysql.sockUptime:         3 days 22 hours 31 min 55 sec

注意 SSL 那一行,`Not in use` 本地链接是不启用加密链接的,当然本地链接也没有必要使用加密链接。如果是远程登录:

([email protected]) [(none)] status--------------mysql  Ver 14.14 Distrib 5.7.36, for linux-glibc2.12 (x86_64) using  EditLine wrapper
Connection id: 8Current database:Current user: [email protected]SSL: Cipher in use is ECDHE-RSA-AES128-GCM-SHA256Current pager: lessUsing outfile: ''Using delimiter: ;Server version: 5.7.36 MySQL Community Server (GPL)Protocol version: 10Connection: 192.168.1.100 via TCP/IPServer characterset: latin1Db characterset: latin1Client characterset: utf8Conn. characterset: utf8TCP port: 3306Uptime:         8 min 18 sec

再次查看 SSL,此时启用了加密链接。


当然了,默认肯定是使用 SSL 加密链接的,但是客户端也可以不使用 SSL 加密链接:

$ mysql -h192.168.1.100 -usontek -p --ssl-mode=DISABLED  # 不启用加盟链接

此时链接到 MySQL 查看链接状态就是 `SSL Not in use`


但是为了安全,也可以设置登录某个用户时,强制使用 SSL

$> alter user 'sontek'@'%' require ssl;    # 强制启用 ssl 登录, 此时不能禁用 SSL 登录了


4. 启用 x509,采用证书的方式登录 MySQL


虽然启用 SSL加密连接 MySQL 已经很安全了,但是在银行或者保险等安全系数要求更高的系统这还远远不够。MySQL 还支持使用证书进行链接。


首先给用户启用 x509,操作如下:

(root@localhost) [(none)]> alter user 'sontek'@'%' require x509; # 启用 x509Query OK, 0 rows affected (0.00 sec)


下载证书到本地,如果在安装时候执行了 `bin/mysql_ssl_rsa_setup` ,那么在 MySQL 数据目录就会有如下文件:

$ ls -l *.pem-rw------- 1 mysql mysql 1676 Mar 3 13:50 ca-key.pem-rw-r--r-- 1 mysql mysql 1112 Mar 3 13:50 ca.pem-rw-r--r-- 1 mysql mysql 1112 Mar 3 13:50 client-cert.pem-rw------- 1 mysql mysql 1680 Mar 3 13:50 client-key.pem-rw------- 1 mysql mysql 1676 Mar 3 13:50 private_key.pem-rw-r--r-- 1 mysql mysql 452 Mar 3 13:50 public_key.pem-rw-r--r-- 1 mysql mysql 1112 Mar 3 13:50 server-cert.pem-rw------- 1 mysql mysql 1680 Mar  3 13:50 server-key.pem


只需要将 `client-cert.pem` 和 `client-key.pem` 下载到本地即可。

$> sz $MYSQL_DATA/client-cert.pem, $MYSQL_DATA/client-key.pem  # $MYSQL_DATA 你的数据目录


配置客户端连接,如图:

如果不配置 SSL 标签的两个认证文件,则链接不成功,具体大家可以自己试试。


至此,MySQL 常用的连接方式都说完了,下一篇说一下 MySQL 权限管理,敬请期待......


大家加油!!!


下面是广告时间,关注 “老刘说技术” 获取更多教程