鏈接 MySQL 方式,最后一種肯定讓你漲見(jiàn)識(shí)

使用過(guò) MySQL 的都知道怎么鏈接,就是通過(guò)客戶(hù)端軟件Navicat,官方的 MySQ LWorkBench 或者其他進(jìn)行客戶(hù)端進(jìn)行鏈接。本文說(shuō)四種鏈接 MySQL 的方式,最后一種可能讓你大漲見(jiàn)識(shí)。

1. 本地 socket 鏈接

通過(guò)之前文章,大家肯定都知道如何安裝了。安裝之后也進(jìn)行了登錄,如下方式:

$ mysql -uroot -p  # 回車(chē),輸入密碼就可登錄了

其實(shí)完整的鏈接方式是這樣的:

$ mysql [-S /tmp/mysql.sock] -uroot -p # 中括號(hào)的內(nèi)容被省略了

MySQL 默認(rèn) socket 的目錄是 /tmp/mysql.sock,具體可查看配置,如下:

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

其實(shí)在 MySQL 本機(jī)鏈接還可以將 -uroot -p 省略,只需要簡(jiǎn)單配置即可。打開(kāi) /etc/my.cnf 輸入如下內(nèi)容:

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

這樣只需要在命令行終端輸入:mysql 就可鏈接了。如下:

$ mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 252
Server 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 its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

(root@localhost) [(none)]> 

2. 通過(guò) TCP/IP 協(xié)議遠(yuǎn)程鏈接

這個(gè)是大家最常用的方式,使用客戶(hù)端就是這種方式,客戶(hù)端鏈接大家都會(huì),我就不演示了,下面我演示一下,如何在 Linux 下遠(yuǎn)程鏈接 MySQL,具體如下:

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

這樣鏈接得有個(gè)前提,root 用戶(hù)必須允許遠(yuǎn)程鏈接,具體可查看 MySQL 權(quán)限一節(jié)。

3. 啟用 SSL

現(xiàn)在所有的瀏覽器訪(fǎng)問(wèn)就建議使用 https,MySQL也不落后,也支持加密鏈接。具體就是在安裝時(shí)是否啟用了 SSL,如下:

$> bin/mysql_ssl_rsa_setup   # 鏈接MySQL啟用SSL,即加密鏈接

如何知道鏈接的 MySQL 是否使用了 SSL 呢?其實(shí)在登錄 MySQL 之后,輸入 status 或者 \s 可查看鏈接狀態(tài):

(root@localhost) [(none)]> status
--------------
mysql  Ver 14.14 Distrib 5.7.36, for linux-glibc2.12 (x86_64) using  EditLine wrapper

Connection id:      253
Current database:   
Current user:       root@localhost
SSL:            Not in use
Current pager:      less
Using outfile:      ''
Using delimiter:    ;
Server version:     5.7.36 MySQL Community Server (GPL)
Protocol version:   10
Connection:     Localhost via UNIX socket
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:        /tmp/mysql.sock
Uptime:         3 days 22 hours 31 min 55 sec

注意 SSL 那一行,Not in use 本地鏈接是不啟用加密鏈接的,當(dāng)然本地鏈接也沒(méi)有必要使用加密鏈接。如果是遠(yuǎn)程登錄:

(sontek@192.168.1.100) [(none)] status
--------------
mysql  Ver 14.14 Distrib 5.7.36, for linux-glibc2.12 (x86_64) using  EditLine wrapper

Connection id:      8
Current database:   
Current user:       sontek@120.244.158.5
SSL:            Cipher in use is ECDHE-RSA-AES128-GCM-SHA256
Current pager:      less
Using outfile:      ''
Using delimiter:    ;
Server version:     5.7.36 MySQL Community Server (GPL)
Protocol version:   10
Connection:     192.168.1.100 via TCP/IP
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    utf8
Conn.  characterset:    utf8
TCP port:       3306
Uptime:         8 min 18 sec

再次查看 SSL,此時(shí)啟用了加密鏈接。

當(dāng)然了,默認(rèn)肯定是使用 SSL 加密鏈接的,但是客戶(hù)端也可以不使用 SSL 加密鏈接:

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

此時(shí)鏈接到 MySQL 查看鏈接狀態(tài)就是 SSL Not in use
但是為了安全,也可以設(shè)置登錄某個(gè)用戶(hù)時(shí),強(qiáng)制使用 SSL

$> alter user 'sontek'@'%' require ssl;    # 強(qiáng)制啟用 ssl 登錄, 此時(shí)不能禁用 SSL 登錄了

4. 啟用 x509,采用證書(shū)的方式登錄 MySQL

雖然啟用 SSL加密鏈接 MySQL 已經(jīng)很安全了,但是在銀行或者保險(xiǎn)等安全系數(shù)要求更高的系統(tǒng)這還遠(yuǎn)遠(yuǎn)不夠。MySQL 還支持使用證書(shū)進(jìn)行鏈接。

首先給用戶(hù)啟用 x509,操作如下:

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

下載證書(shū)到本地,如果在安裝時(shí)候執(zhí)行了 bin/mysql_ssl_rsa_setup ,那么在 MySQL 數(shù)據(jù)目錄就會(huì)有如下文件:

$ 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.pemclient-key.pem 下載到本地即可。

$> sz $MYSQL_DATA/client-cert.pem, $MYSQL_DATA/client-key.pem  # $MYSQL_DATA 你的數(shù)據(jù)目錄

配置客戶(hù)端鏈接,如圖:


link-mysql-x509.png

如果不配置 SSL 標(biāo)簽的兩個(gè)認(rèn)證文件,則鏈接不成功,具體大家可以自己試試。

至此,MySQL 常用的鏈接方式都說(shuō)完了,下一篇說(shuō)一下 MySQL 權(quán)限管理,敬請(qǐng)期待......

大家加油?。。?/strong>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容