今天須要在本地測試系統功能,由於本地沒有數據庫,就須要在程序裏面鏈接遠程數據庫;html
先用ssh登陸遠程服務器,用root連上數據庫看看狀況;mysql
mysql> select Host,User,Password from mysql.user; +----------------+------------------+-------------------------------------------+ | Host | User | Password | +----------------+------------------+-------------------------------------------+ | localhost | root | *836E233974EBE6EA32F95F890A91363F8427F78B | | win_srv1 | root | *836E233974EBE6EA32F95F890A91363F8427F78B | | 127.0.0.1 | root | *836E233974EBE6EA32F95F890A91363F8427F78B | | ::1 | root | *836E233974EBE6EA32F95F890A91363F8427F78B | | localhost | jsjks | *1460ED3535ABDBB887F9E5F57F40A2354610CDF3 | +----------------+------------------+-------------------------------------------+ 5 rows in set (0.00 sec)
一共有5個mysql帳號,Host列能夠看出來,這些帳號都只支持服務器本機鏈接,如今咱們來建立一個遠程用戶;sql
create user test identified by '123@456';
+----------------+------------------+-------------------------------------------+ | Host | User | Password | +----------------+------------------+-------------------------------------------+ | localhost | root | *836E283974EBE6EA32F95F890A91363F8427F78B | | win_srv1 | root | *836E283974EBE6EA32F95F890A91363F8427F78B | | 127.0.0.1 | root | *836E283974EBE6EA32F95F890A91363F8427F78B | | ::1 | root | *836E283974EBE6EA32F95F890A91363F8427F78B | | localhost | jsjks | *1460ED35E5ABDBB887F9E5F57F40A2354610CDF3 | | % | test | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | +----------------+------------------+-------------------------------------------+ 6 rows in set (0.00 sec)
建立完成了,在程序裏面鏈接發現仍是沒有權限,剛纔咱們只是建立了用戶,尚未對這個用戶分配權限;數據庫
grant all privileges on *.* to 'test'@'%'identified by '123@456' with grant option;
all表明接受全部操做,好比 select,insert,delete....; *.* 表明全部庫下面的全部表;% 表明這個用戶容許從任何地方登陸;爲了安全期間,這個%能夠替換爲你容許的ip地址;安全
而後刷新mysql用戶權限相關表;服務器
flush privileges ;
我覺得就此收工了,等等,程序怎麼仍是連不上去,仍是 access deny ;app
難道端口不是3306嗎,打開 mysql配置文件,是默認的3306,接着往下面看,發現一個關鍵地方;ssh
bind-address = 127.0.0.1
原來這裏mysql默認綁定了本地ip,不接受其餘來源;註釋掉,重啓mysql 一切OK;ide
還有兩個經常使用操做;post
修改指定用戶密碼
update mysql.user set password=password('新密碼') where User="test" and Host="localhost";
刪除用戶
delete from user where User='test' and Host='localhost';