1.登錄MySQL
創(chuàng)新互聯(lián)建站是一家專注于成都網(wǎng)站設計、成都網(wǎng)站制作與策劃設計,東麗網(wǎng)站建設哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設十年,網(wǎng)設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:東麗等地區(qū)。東麗做網(wǎng)站價格咨詢:028-86922220
登錄MySQL的命令是mysql, mysql 的使用語法如下: mysql [-u username] [-
h host] [-p[password]] [dbname]
username 與 password 分別是 MySQL 的用戶名與密碼,mysql的初始管理帳號是root,沒有密碼,注意:這個root用戶不是Linux的系統(tǒng)用戶。MySQL默認用戶是root,由于 初始沒有密碼,第一次進時只需鍵入mysql即可。
[root@test1 local]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1 to server version: 4.0.16-standard
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql
出現(xiàn)了“mysql”提示符,]
這說明你安裝是成功的。
2.MySQL默認沒有密碼,安裝完畢增加密碼的重要性是不言而喻的。
1、命令
usr/bin/mysqladmin -u root password 'new-password'
格式:mysqladmin -u用戶名 -p舊密碼 password 新密碼
2、例子
例1:給root加個密碼123456。
鍵入以下命令 :
[root@test1 local]# /usr/bin/mysqladmin -u root password 123456
注:因為開始時root沒有密碼,所以-p舊密碼一項就可以省略了。
3.增加了密碼后的登錄格式如下:
mysql -u root -p
Enter password: (你自己設的密碼)
其中-u后跟的是用戶名,-p要求輸入密碼,回車后在輸入密碼處輸入密碼,就會提示登陸成功。
mysql連接可分為socket連接和TCP|IP連接兩種。
[root@localhost bin]# mysql -uroot -p123456 -S/tmp/mysql.sock
-S/tmp/mysql.sock可以省略,因為默認參數(shù)如下:
假如sock文件另有其它,那么就后面不能省略,需要指定下。
mysql -h127.0.0.1 -P3306 -uroot -p123456
那么問題來了,如何知道當前連接的連接方式?
查看當前連接方式,使用\s 或者status命令
Connection: Localhost via UNIX socket 表示使用 socket 進行本地的連接
SSL: Not in use 沒有使用SSL
Connection: 127.0.0.1 via TCP/IP 使用TCP/IP 協(xié)議進行遠程連接
SSL: Cipher in use is ECDHE-RSA-AES128-GCM-SHA256 使用了SSL加密
mysql5.7默認是使用SSL的方式來進行通訊的。
/s輸出SSL: Not in use,說明當前沒有使用SSL連接。
再看下error.log有一個waning:failed to set up SSL because of the following SSL liberary error:SSL context is not usable withut certificate and private key。公密鑰文件不存在,所以無法啟用SSL的連接方式。
1、進入bin目錄執(zhí)行命令: mysql_ssl_rsa_setup 在/data 根目錄 生成相關的*.pem 密鑰文件。
2、對新生成到pem文件授權chown mysql:mysql *.pem
3、 /etc/init.d/mysqld restart 重啟mysql
4、進入命令客戶端執(zhí)行\(zhòng)s
使用IP/TCP遠程連接時,\s輸出 SSL: Cipher in use is ECDHE-RSA-AES128-GCM-SHA256。說明已經用上SSL加密。
使用socket進行本地連接,就不會使用SSL加密。\s輸出SSL: Not in use;
因為SSL開啟可能有性能影響。如果不希望使用ssl加密登錄連接,那么可以使用下面命令進行禁用:mysql -h127.0.0.1 -uroot -p123456 --ssl-mode=DISABLED
強制一個用戶使用ssl
之后david用戶就必須使用ssl登錄了,否則報錯如下:
取消一個用戶強制使用ssl
x509認證在開啟SSL的基礎下,還強制指定用戶必須使用client-cert.pem和client-key.pem證書、密鑰文件來登錄,否則登錄不了。x509是mysql最高等級的認證機制。
之前已經在data根目錄生成了8個 *.pem文件
把其中client-cert.pem和client-key.pem導出
如下,再使用之前的命令登錄。發(fā)現(xiàn)登錄不了了。
此時想要登錄必須在客戶端指定SSL CERT File和SSL Key File 如下在navicat中
在mysql workbench中
當?MySQL?服務開啟后,就可以通過客戶端來登錄 MySQL 數(shù)據(jù)庫了。在 Windows 操作系統(tǒng)下可以使用 DOS 命令登錄數(shù)據(jù)庫,本節(jié)將介紹使用命令方式登錄 MySQL 數(shù)據(jù)庫的方法。
登錄 MySQL 數(shù)據(jù)庫的具體操作步驟如下:
步驟 1):單擊“開始”→“Windows 系統(tǒng)”→“命令提示符”,如圖所示。
步驟 2):打開命令行提示符界面,輸入命令cd C:\Program Files\MySQL\MySQL Server 5.7\bin\,按回車鍵,如圖所示。
步驟 3):在命令提示符界面可以通過登錄命令mysql -h 127.0.0.1 -u root -p連接 MySQL 數(shù)據(jù)庫。
按回車鍵,系統(tǒng)會提示輸入密碼(Enter password),這里輸入配置向導中設置的密碼,驗證正確后,即可登錄 MySQL 數(shù)據(jù)庫,如圖所示。
提示:mysql 為登錄命令,-h 后面的參數(shù)是服務器的主機地址,在這里客戶端和服務器在同一臺機器上,所以輸入 localhost 或者 IP 地址;-u 后面跟登錄數(shù)據(jù)庫的用戶名稱,在這里為 root;-p 后面是用戶登錄密碼。
在 DOS 窗口下運行該命令后,系統(tǒng)會提示輸入密碼。密碼輸入正確以后,即可登錄到 MySQL 數(shù)據(jù)庫。
可以在 mysql 命令中直接加上密碼,該命令為 mysql -h localhost -u root -proot。這里的 -p 后面的 root 就是密碼。此處特別注意 -p 和密碼之間沒有空格。如果出現(xiàn)空格,系統(tǒng)將不會把后面的字符串當成密碼來對待。
步驟 4):登錄成功后進入 MySQL 初始界面,會出現(xiàn)“Welcome to the MySQL monitor”的歡迎語,然后下面還有一些說明性的語句,如圖所示。
這些說明性語句介紹如下:
Commands end with; or\g:說明 mysql 命令行下的命令是以分號(;)或“\g”來結束的,遇到這個結束符就開始執(zhí)行命令。
Your MySQL connection id is 3:id 表示 MySQL 數(shù)據(jù)庫的連接次數(shù)。
Server version: 5. 7.29-log MySQL Community Server(GPL):Server version?后面說明數(shù)據(jù)庫的版本,這個版本為 5.7.29。Community 表示該版本是社區(qū)版。
Type 'help;' or '\h' for help:表示輸入”help;“或者”\h“可以看到幫助信息。
Type '\c' to clear the current input statement:表示遇到”\c“就清除前面的命令。
提示:當窗口中出現(xiàn)如上圖所示的說明信息,命令提示符變?yōu)椤癿ysql”時,表明已經成功登錄 MySQL 服務器,可以開始對數(shù)據(jù)庫進行操作了。
通過命令行客戶端軟件登錄
當 MySQL 軟件安裝完后,一般都會安裝一個簡單命令行使用程序(MySQL Command Line Client),該客戶端沒有流行的用戶界面。
選擇”開始“→”程序“→”MySQL“→”MySQL 5.7 Command Line Client?“,打開 MySQL Command Line Client 進入提示輸入密碼的界面,如圖所示。
請點擊輸入圖片描述
輸入正確的密碼后,登錄到 MySQL 軟件,如果以這種方式登錄 MySQL,需要保證 MySQL 服務處于啟動狀態(tài)。
如果輸入密碼后,程序窗口出現(xiàn)閃退現(xiàn)象,則可以參考《MySql Command Line Client閃退解決方案》一節(jié)。
MySQL默認的數(shù)據(jù)通道是不加密的,在一些安全性要求特別高的場景下,我們需要配置MySQL端口為SSL,使得數(shù)據(jù)通道加密處理,避免敏感信息泄漏和被篡改。
當然,啟用MySQL SSL之后,由于每個數(shù)據(jù)包都需要加密和解密,這個對MySQL的性能是有不小影響的,讀者們在使用的時候,要根據(jù)實際情況斟酌。
MySQL客戶端登錄服務器時候的密碼不是明文傳輸,有加密策略處理。
筆者是在 ubuntu12.04 系統(tǒng)上使用MySQL 5.5版本測試的,其他環(huán)境請讀者自行匹配。
配置MySQL服務器證書
編輯 /etc/mysql/my.cnf 文件
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem
把上面三行默認證書配置注釋打開,使用自己的證書。筆者就使用上次在搭建自己的CA服務 – OpenSSL CA 實戰(zhàn)文章中生成的證書
ssl-ca=/home/yunweipai/user_certs/ca_cert.cer
ssl-cert=/home/yunweipai/user_certs/web.cer
ssl-key=/home/yunweipai/user_certs/web_key_plain.pem
這里需要注意的是,在ubuntu上,配置證書后如果不生效,參考這里解決方法
注意上面配置的 web_key_plain.pem 文件,由于MySQL不支持加密后的私鑰,因此我們使用命令
openssl rsa -in web_key.pem -passin pass:Yunweipai@123 -out web_key_plain.pem
將私鑰解密。MySQL不支持私鑰加密的原因是從安全性角度考慮,因為如果要用戶傳遞一個加密的私鑰,那么必須要用戶傳密碼,那么MySQL怎么存儲這個密碼呢?這就引出了我們在密碼存儲和傳輸?shù)陌踩ㄗh里面提到的一系列問題了。
所以MySQL為了簡化實現(xiàn),就不支持私鑰加密。
指定客戶端連接方式
MySQL服務端在對客戶端授權的時候,可以通過選項指定客戶端連接MySQL 服務器的SSL級別,參考MySQL賦權的 REQUIRE值:
ssl_option
SSL: 不認證客戶端,客戶端不需要提供證書
X509: 客戶端必須發(fā)送一個有效的X509證書
issuer: 客戶端的證書是否是服務器所配置的CA頒發(fā)的(在我們場景下是ca_cert.cer頒發(fā)的證書)
subject: 認證證書的subject(關于證書的subject在之前的文章有介紹)
cipher: 指定加密算法
這些選項可以疊加使用,如:X509|issuser
客戶端連接(SSL方式)
mysql 客戶端連接
mysql -u root -pChangeme_123 -P 3306 --ssl-ca=/home/yunweipai/user_certs/ca_cert.cer
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 36
Server version: 5.5.43-0ubuntu0.12.04.1 (Ubuntu)
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
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.
mysql \s
--------------
mysql Ver 14.14 Distrib 5.5.43, for debian-linux-gnu (i686) using readline 6.2
Connection id: 36
Current database:
Current user: root@localhost
SSL: Cipher in use is DHE-RSA-AES256-SHA
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.5.43-0ubuntu0.12.04.1 (Ubuntu)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: latin1
Conn. characterset: latin1
UNIX socket: /var/run/mysqld/mysqld.sock
Uptime: 29 sec
Threads: 1 Questions: 109 Slow queries: 0 Opens: 48 Flush tables: 1 Open tables: 41 Queries per second avg: 3.758
--------------
JDBC連接
在jdbc字符串中增加下面參數(shù)
useSSL=trueverifyServerCertificate=false
這么就不需要客戶端配置證書了,配置就簡單很多。因為mysql本身有賬號口令認證,因此不需要證書認證。