1、如何為MySQL伺服器和客戶機啟用SSL
用戶想要與MySQL伺服器建立一條安全連接時,常常依賴VPN隧道或SSH隧道。不過,獲得MySQL連接的另一個辦法是,啟用MySQL伺服器上的SSL封裝器(SSL wrapper)。這每一種方法各有其優缺點。比如說,在出現多條短時間MySQL連接的高度動態環境下,VPN或SSH隧道也許是比SSL更好的選擇,因為後者建立每條連接時需要成本高昂的SSL握手計算。另一方面,如果是長時間運行的MySQL連接比較少的那些應用,基於SSL的加密可能很合理。由於MySQL伺服器已經內置了SSL支持功能,你不需要實施VPN或SSH隧道之類單獨的安全層,這種隧道有其自己的維護開銷。
在MySQL伺服器中實施SSL可以加密在伺服器與客戶機之間來回傳輸的所有數據,因而防止廣域網或數據中心裏面可能出現的竊聽或數據嗅探行為。此外,SSL還通過SSL證書提供了身份驗證機制,因而可以保護用戶,遠離可能出現的網路釣魚攻擊。
我們在本文中將介紹如何啟用MySQL伺服器上的SSL。請注意:同樣過程適用於MariaDB伺服器。
創建Server SSL證書和私鑰
我們必須為MySQL伺服器創建SSL證書和私鑰,通過SSL連接到伺服器時要用到它們。
首先,創建一個臨時的工作目錄,我們將把私鑰和證書文件放在該目錄下。
$ sudo mkdir ~/cert $ cd ~/cert
確保OpenSSL已安裝在運行MySQL伺服器的系統上。通常,所有Linux發行版在默認情況下都安裝了OpenSSL。想檢查一下OpenSSL有沒有安裝,不妨使用下面這個命令。
$ openssl version OpenSSL 1.0.1f 6 Jan 2014
現在,繼續創建CA私鑰和證書。下面這些命令將創建ca-key.pem和ca-cert.pem。
$ openssl genrsa 2048 > ca-key.pem $ openssl req -sha1 -new -x509 -nodes -days 3650 -key ca-key.pem > ca-cert.pem
第二個命令會詢問你幾個問題。你在這些欄位里填入什麼並不重要。只管填好那些欄位。
下一步是為伺服器創建私鑰。
$ openssl req -sha1 -newkey rsa:2048 -days 730 -nodes -keyout server-key.pem > server-req.pem
這個命令會再次詢問幾個問題,你可以填寫上一步中提供的相同答案。
下一步,使用下面這個命令,將伺服器的私鑰導出成RSA類型的密鑰。
$ openssl rsa -in server-key.pem -out server-key.pem
最後,使用CA證書,創建伺服器證書。
$ openssl x509 -sha1 -req -in server-req.pem -days 730 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem
配置MySQL伺服器上的SSL
完成上述過程後,我們應該有了CA證書、伺服器的私鑰及其證書。下一步就是配置MySQL伺服器,以便使用私鑰和證書。
在配置MySQL伺服器之前,檢查一下SSL選項已被啟用還是被禁用。為此,登錄進入到MySQL伺服器,輸入下面這個查詢。
mysql> SHOW GLOBAL VARIABLES LIKE 'have_%ssl';,
該查詢的結果會如同下圖。
請注意:「have_openssl」和「have_ssl」變數的默認值是「被禁用」,如下所示。想啟用MySQL伺服器中的SSL,繼續執行下列步驟。
1. 將ca-cert.pem、server-cert.pem和server-key.pem拷貝或移動到/etc目錄下。
$ sudo mkdir /etc/mysql-ssl $ sudo cp ca-cert.pem server-cert.pem server-key.pem /etc/mysql-ssl
2. 使用文本編輯工具,打開伺服器的my.cnf配置文件。添加或去掉注釋[mysqld]部分中類似下面內容的幾行。這些應該指向你放在/etc/mysql-ssl中的私鑰和證書。
[mysqld] ssl-ca=/etc/mysql-ssl/ca-cert.pem ssl-cert=/etc/mysql-ssl/server-cert.pem ssl-key=/etc/mysql-ssl/server-key.pem
3. 在my.cnf中,還要找到「bind-address = 127.0.0.1」,並將它改成:
bind-address = *
那樣一來,你就可以從另一個主機連接到MySQL伺服器了。
4. 重啟MySQL服務。
$ sudo service mysql restart 或 $ sudo systemctl restart mysql 或 $ sudo /etc/init.d/mysql restart
你只要查看MySQL錯誤日誌文件(比如/var/log/mysql/mysql.log),就可以檢查SSL配置有沒有問題。要是錯誤日誌中沒有警告或錯誤(就像下面的屏幕截圖),這表明SSL配置沒有問題。
驗證SSL配置的另一個辦法就是,在MySQL伺服器裡面再次運行「have_%ssl」查詢。
mysql> SHOW GLOBAL VARIABLES LIKE 'have_%ssl';
創建擁有SSL許可權的用戶
伺服器端的SSL配置完成後,下一步就是創建有權通過SSL訪問MySQL伺服器的用戶。為此,登錄進入到MySQL伺服器,輸入下面內容:
mysql> GRANT ALL PRIVILEGES ON *.* TO 『ssluser』@』%』 IDENTIFIED BY 『dingdong』 REQUIRE SSL; mysql> FLUSH PRIVILEGES;
把「ssluser」(用戶名)和「dingdong」(密碼)換成你自己的用戶名和密碼。
如果你想分配一個特定的IP地址(比如192.168.2.8),以便用戶從該地址來訪問伺服器,那就改而使用下列查詢。
mysql> GRANT ALL PRIVILEGES ON *.* TO 『ssluser』@』192.168.2.8』 IDENTIFIED BY 'dingdong' REQUIRE SSL; mysql> FLUSH PRIVILEGES;
配置MySQL客戶機上的SSL
鑒於MySQL伺服器端配置已完成,不妨將目光轉移到客戶機端。就MySQL客戶機而言,我們就需要基於伺服器的CA私鑰和證書,創建新的私鑰和證書。
在伺服器的CA私鑰和證書駐留於其中的MySQL伺服器主機上運行下列命令。
$ openssl req -sha1 -newkey rsa:2048 -days 730 -nodes -keyout client-key.pem > client-req.pem
類似伺服器端配置,上述命令會詢問幾個問題。只管填好欄位,就像前面所做的那樣。
我們還需要將創建的客戶機私鑰轉換成RSA類型,如下所示。
$ openssl rsa -in client-key.pem -out client-key.pem,
最後,我們需要使用伺服器的CA私鑰和證書,創建客戶機證書。
$ openssl x509 -sha1 -req -in client-req.pem -days 730 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem
現在,將ca-cert.pem、client-cert.pem和client-key.pem文件轉移到你想要運行MySQL客戶機的任何主機上。
在客戶機主機上,使用下面這個命令,通過SSL連接到MySQL伺服器。
$ mysql --ssl-ca=ca-cert.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem -h -u ssluser -p
在輸入ssluser的密碼後,你會看到如往常那樣的MySQL提示符。
想檢查一下你有沒有使用SSL,在提示符處輸入狀態命令。
mysql> status;
如果你已通過SSL連接上去,它會在SSL欄位顯示密碼信息,如下所示。
2、客戶端在沒有安裝Mysql的情況下訪問伺服器上的Mysql
可以安裝一個MySQL-Front
打開後,新建連接,輸入伺服器上的mysql的公網ip,賬號以及密碼,即可遠程訪問mysql
3、mysql-server 與 mysql-client的區別,見補充
客戶--client--server物理數據。
伺服器--mysql-server是服務端。
(1)mysql-server 是mysql核心程序,生成管理資料庫實例,資料庫實例任務調度線程之類,並提供相關介面供不同客戶端調用,後者是操作資料庫實例的工具。
(2)mysql-client操作mysql實例的客戶端有很多,mysql-client只是其中一種,包括mysql,mysqlmp,mysqlslap,這些訪問,備份,壓力測試的工具。
(3)mysql-server是服務端,也就是說,你服務端沒安裝,客戶端沒對象去操作。
(1)黑客的初學者和網路安全的研究者都知道灰鴿子吧,其實灰鴿子就是一種C/S遠程式控制制軟體。C就是代表Client,即客戶的意思,而S自然代表 Server,也就是服務的意思了。
(2)不要以為這里的C/S軟體里,你是客戶而黑客們是服務者,真正說來,中了遠控木馬的人才是提供服務者,黑客們眼裡的服務端,或者說中了服務端木馬的人,也就是近乎可以隨意操縱的對象了。
(3)而一般來說,剛生成的病毒很容易就會被查殺,經驗老道的黑客們一般會進行壓縮加花或者綁定處理,以達到免殺的效果。
參考資料網路-服務端
4、訪問mysql伺服器 客戶端需要安裝mysql嗎
一般是不需要mysql的,只要你客戶端是網路型的,可以獲取到伺服器那邊的數據。客戶端只要顯示就可以了。
不需要安裝mysql的。
5、mysql客戶端如何連接伺服器
方法如下:
、進入mysql,創建一個新用戶kay:
2、 格式:grant 許可權 on 資料庫名.表名 用戶@登錄主機 identified by "用戶密碼";
grant select,update,insert,delete on *.* to [email protected] identified by "kaypass";
3、 查看結果,執行:
use mysql;
select host,user,password from user;
可以看到在user表中已有剛才創建的kay用戶。host欄位表示登錄的主機,其值可以用IP,也可用主機名,
將host欄位的值改為%就表示在任何客戶端機器上能以kay用戶登錄到mysql伺服器,建議在開發時設為%。
update user set host = '%' where user = 'kay';
還有一個方法::
A、 ./mysqladmin -uroot -p21century reload
./mysqladmin -uroot -p21century shutdown
B、./mysqld_safe --user-root &
記住:對授權表的任何修改都需要重新reload,即執行第3步。
如果經過以上3個步驟還是無法從客戶端連接,請執行以下操作,在mysql資料庫的db表中插入一條記錄:
use mysql;
insert into db values('192.168.88.234','%','xuys','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
update db set host = '%' where user = 'xuys';
重復執行上面的第2、3步。
6、怎麼使用mysql客戶端軟體訪問本地的一個mysql伺服器,不知道該伺服器的用戶名和密碼
如果用戶名和密碼,除非:
1、開通了匿名賬戶;
2、攻擊mysql服務。
另外還要有客戶端。
7、mysql的客戶端怎麼連接到它的服務端
多數的資料庫連接方式都一樣,提供個IP,用戶名,密碼,就可以訪問了版。
但有個前提權,就是伺服器端得允許你連接。這個需要伺服器端設置。
不過建議試用phpMyAdmin這套PHP程序,如果,你是管理自己網站的資料庫,這個非常好用。
其實,一般你的伺服器提供商也會提供你這套程序輔助你管理你的資料庫的。
建議你嘗試試用這套PHP程序來管理你的MYSQL資料庫。
8、客戶端連接伺服器Mysql資料庫
NowString = "GetDate()"
'--連接名(SqlLocalName)(本地用(local),外地用IP)
Const SqlDatabaseName = "資料庫名稱"
Const SqlUsername = "用戶名"
Const SqlPassword = "密碼"
Const SqlLocalName = "資料庫伺服器"
如果使用版mysql推薦使用軟體讀取資料庫navicat8直接將資料庫導入權進去就可以了!
可以使用這個方法連接,也可以直接連接字元串!
如果資料庫密碼或者賬號改變了在這里就直接更改就可以了 參考資料: http://www.sy512.cn/article/201105/10565.html
9、mysql伺服器在哪裡
net start mysql
net stop mysql
mysql -uroot -p -h192.168.1.100
-h後面跟來主自機地址
有的版本是
net start mysqld
net stop mysqld
10、怎樣用window下mysql客戶端連接linux下的mysql伺服器
樓上兩位已經說的很清楚了,就是這么一條命令就可以了。
只不過,你要確保你的linux主機開放了相關埠,允許遠程連接mysql。