默認(rèn)情況下,我們的mysql遠(yuǎn)程連接是關(guān)閉的勾给,但是我們還需要通過navicat來遠(yuǎn)程連接服務(wù)器的mysql,這時(shí)我們必須先打開mysql的遠(yuǎn)程連接脓钾。
我們這里以開啟阿里云 上的Mysql遠(yuǎn)程連接為例桩警。
環(huán)境前提:Ubuntu16.04 mysql5.7
一捶枢,首先登錄位于阿里云上的mysql:
在服務(wù)器上執(zhí)行:
mysql -u root -h localhost -p
登錄root數(shù)據(jù)庫
二. 切換到mysql數(shù)據(jù)庫 (需要有能操作mysql這個(gè)庫的權(quán)限,一般是mysql的root用戶)
use mysql
在Mysql中其實(shí)有一個(gè)內(nèi)置且名為'mysql'的數(shù)據(jù)庫谨胞,這個(gè)數(shù)據(jù)庫中存儲(chǔ)的是Mysql的一些數(shù)據(jù)胯努,比如用戶术瓮、權(quán)限信息胞四、存儲(chǔ)過程等,所以呢氓侧,我們可以通過如下簡單的查詢語句來顯示所有的用戶:
SELECT User, Host, Password FROM mysql.user;
執(zhí)行結(jié)果:
--------------+--------------+| user | host | password |+------------------+--------------+--------------+| root | localhost | 37as%#8123fs || debian-test-user | localhost | HmBEqPjC5Y || johnsm | localhost | || brian | localhost | || root | 111.111.111.1| || guest | % | ||linuxprobe | 10.11.12.13 | RFsgY6aiVg |+------------------+--------------+--------------+7 rows in set (0.01 sec)**
三. 這時(shí)我們有兩種方式來進(jìn)行修改:
第一種:是直接將原來的 user='root' and host='localhost' 記錄的host修改成%或指定的ip
1)將host設(shè)置為%表示任何ip都能連接mysql
update user set host='%' where user='root' and host='localhost';
- 當(dāng)然也可以將host指定為某個(gè)ip
update user set host='106.39.178.131' where user='root' and host='localhost';
- 執(zhí)行完以上語句,接著執(zhí)行以下語句 ,刷新權(quán)限表,使配置生效
flush privileges;
第二種: 是新增一條記錄方式
1)新增一個(gè)用戶newname(這個(gè)新增的用戶名稱也可以為root)密碼為并將host設(shè)置為%表示任何ip都能連接mysql
grant all on *.* to 'newname'@'%' identified by 'Navicat_123';
2)新增一個(gè)用戶newname,密碼為并將host設(shè)置為指定的ip 表示 只有該ip能連接mysql
grant all on *.* to 'newname'@'106.39.178.131' identified by 'Navicat_123';
grantallprivilegeson*.*to'root'@'%'identifiedby'123456'withgrantoption;
此語句意思是給root用戶在任何IP都可以登錄數(shù)據(jù)庫约巷,操作任何數(shù)據(jù)庫中的任何對(duì)象独郎。
其中:
. 第一個(gè)*是指數(shù)據(jù)庫
*代表所有數(shù)據(jù)庫
第二個(gè)*指數(shù)據(jù)庫對(duì)象
*代表數(shù)據(jù)庫中所有對(duì)象
'root'@'%' root是制定要授權(quán)的數(shù)據(jù)庫用戶
%代表允許登錄的IP
123456是你的數(shù)據(jù)庫密碼
假如要限制只能在1.1.1.1登錄枚赡,把%改成1.1.1.1 ,執(zhí)行完畢后執(zhí)行 flush privileges; 刷新權(quán)限
刪除是數(shù)據(jù)庫用戶:
delete from mysql.user where user='xfz' and host='%';
- 執(zhí)行完以上語句,接著執(zhí)行以下語句 ,刷新權(quán)限表,使配置生效
flush privileges;
當(dāng)然如果想再改成本地的連接贪婉,只需要將對(duì)應(yīng)用戶的host改成localhost即可疲迂,
update user set host='localhost' where user='root' and host='106.39.178.131';
四. 不要現(xiàn)在就去navicat進(jìn)行連接,還需要做兩件事尤蒿,要不你就到坑里了
1)檢查服務(wù)器防火墻3306端口開放了嗎,沒開放需要去開放
2)檢查一下阿里云的安全組規(guī)則中是否開放了3306端口,
如何檢查及配置參考文檔:[https://help.aliyun.com/docum...]
五. 現(xiàn)在是時(shí)候進(jìn)行遠(yuǎn)程連接啦竣贪,在工具里輸入相應(yīng)的參數(shù)
host: 阿里云服務(wù)器的ip
port:3306
user name : 如果是第一種方式的修改巩螃,用戶就是root,第二種修改就是你自己設(shè)置的名字匕争,例如我的就是newname
password: 如果是第一種方式的修改,密碼就是root的密碼,第二種修改就是你自己設(shè)置的密碼,例如我的就是Navicat_123
至此,連上去那一刻拍皮,有木有很激動(dòng)啊铆帽。
.查詢用戶表
在Mysql中其實(shí)有一個(gè)內(nèi)置且名為mysql的數(shù)據(jù)庫德谅,這個(gè)數(shù)據(jù)庫中存儲(chǔ)的是Mysql的一些數(shù)據(jù),比如用戶愧驱、權(quán)限信息椭盏、存儲(chǔ)過程等,所以呢糟红,我們可以通過如下簡單的查詢語句來顯示所有的用戶呢乌叶。
SELECT User, Host, Password FROM mysql.user;
你將會(huì)看到如下這樣的信息:
```
+------------------+--------------+--------------+| user | host | password |+------------------+--------------+--------------+| root | localhost | 37as%#8123fs || debian-test-user | localhost | HmBEqPjC5Y || johnsm | localhost | || brian | localhost | || root | 111.111.111.1| || guest | % | ||linuxprobe | 10.11.12.13 | RFsgY6aiVg |+------------------+--------------+--------------+7 rows in set (0.01 sec)
```
如果你想增加或減少一些列的顯示枉昏,那么你只需要編輯這條sql語句即可,比如你只需要顯示用戶的用戶名句旱,那么你就可以這樣使用SELECT User FROM mysql.user;,就是這樣了腥泥,很簡單嘛,就用這種方法就可以獲得所有用戶了呢蛔外,快去試試吧溯乒。
3.顯示所有的用戶(不重復(fù))
熟悉Mysql的朋友們都知道DISTINCT這個(gè)修飾的作用吧裆悄,對(duì)了,就是去除重復(fù)的數(shù)據(jù)光稼,所以我們可以使用如下命令顯示所有你的Mysql的用戶而忽略那些僅僅是主機(jī)名不同的用戶艾君。
SELECT DISTINCT User FROM mysql.user;
這條命令的輸出就像下面顯示的這樣:
+------------------+
| user |
+------------------+
| root |
| debian-test-user |
| johnsm |
| brian |
| guest |
| linuxprobe |
+------------------+
6 rows in set (0.01 sec)