設(shè)置mysql服務(wù)允許外網(wǎng)訪問,修改mysql的配置文件,有的是my.ini,有的是my.cnf【linux】.
創(chuàng)新互聯(lián)公司是一家專業(yè)提供寧武企業(yè)網(wǎng)站建設(shè),專注與做網(wǎng)站、成都網(wǎng)站建設(shè)、H5建站、小程序制作等業(yè)務(wù)。10年已為寧武眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
1:設(shè)置mysql的配置文件
/etc/mysql/my.cnf
找到 bind-address =127.0.0.1 將其注釋掉;//作用是使得不再只允許本地訪問;
重啟mysql:/etc/init.d/mysql restart;
2:登錄mysql數(shù)據(jù)庫(kù):mysql -u root -p
mysql use mysql;
查詢host值:
mysql select user,host from user;
如果沒有"%"這個(gè)host值,就執(zhí)行下面這兩句:
mysql update user set host='%' where user='root';
mysql flush privileges;
或者也可以執(zhí)行:
mysqlgrand all privileges on *.* to root@'%' identifies by ' xxxx';
其中 第一個(gè)*表示數(shù)據(jù)庫(kù)名;第二個(gè)*表示該數(shù)據(jù)庫(kù)的表名;如果像上面那樣 *.*的話表示所有到數(shù)據(jù)庫(kù)下到所有表都允許訪問;
‘%':表示允許訪問到mysql的ip地址;當(dāng)然你也可以配置為具體到ip名稱;%表示所有ip均可以訪問;
后面到‘xxxx'為root 用戶的password;
舉例:
任意主機(jī)以用戶root和密碼mypwd連接到mysql服務(wù)器
mysql GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mypwd' WITH GRANT OPTION;
mysql flush privileges;
IP為192.168.1.102的主機(jī)以用戶myuser和密碼mypwd連接到mysql服務(wù)器
mysql GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.102' IDENTIFIED BY 'mypwd' WITH GRANT OPTION;
mysql flush privileges;
mysql的root賬戶,我在連接時(shí)通常用的是localhost或127.0.0.1,公司的測(cè)試服務(wù)器上的mysql也是localhost所以我想訪問無(wú)法訪問,測(cè)試暫停.
解決方法:
1,修改表,登錄mysql數(shù)據(jù)庫(kù),切換到mysql數(shù)據(jù)庫(kù),使用sql語(yǔ)句查看"select host,user from user ;"
mysql -u root -pvmwaremysqluse mysql;
mysqlupdate user set host = '%' where user ='root';
mysqlselect host, user from user;
mysqlflush privileges;注意:最后一句很重要,目的是使修改生效.如果沒有寫,則還是不能進(jìn)行遠(yuǎn)程連接.
2,授權(quán)用戶,你想root使用密碼從任何主機(jī)連接到mysql服務(wù)器
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'admin123' WITH GRANT OPTION;
flush privileges;
如果你想允許用戶root從ip為192.168.1.104的主機(jī)連接到mysql服務(wù)器
允許root用戶在任何地方進(jìn)行遠(yuǎn)程登錄,并具有所有庫(kù)任何操作權(quán)限,具體操作如下:
1.在本機(jī)先使用root用戶登錄mysql:
mysql -u root -p"youpassword"
2.進(jìn)行授權(quán)操作:
mysqlGRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;
3.重載授權(quán)表:
FLUSH PRIVILEGES;
4.退出mysql數(shù)據(jù)庫(kù):
exit
1、首先檢查mysql所在服務(wù)器的防火墻,如果限制了外網(wǎng)對(duì)3306端口的連接,那么放開限制
Linux服務(wù)器中執(zhí)行
iptables -L 可以查看當(dāng)前的防火墻規(guī)則
iptables -F 可以清空所有防火墻規(guī)則
2、確保mysql的監(jiān)聽地址是0.0.0.0
監(jiān)聽地址是0.0.0.0 ,表示該mysql允許所有IP地址進(jìn)行連接,這是允許遠(yuǎn)程連接的基礎(chǔ)
監(jiān)聽地址是127.0.0.1,則代表該mysql只允許所在服務(wù)器本機(jī)連接,外網(wǎng)是無(wú)法連接的
怎么知道m(xù)ysql的監(jiān)聽地址是多少
Linux服務(wù)器中執(zhí)行如下命令可以查看: netstat -nutlp|grep mysql
3、添加遠(yuǎn)程連接mysql的賬號(hào)
此步驟是必須要操作的,mysql本身的用戶只能在本機(jī)上連接數(shù)據(jù)庫(kù),外網(wǎng)連接的話,需要先添加遠(yuǎn)程用戶并授權(quán)。
在mysql命令行模式下,或者phpmyadmin中執(zhí)行sql語(yǔ)句添加遠(yuǎn)程連接用戶
grant all on *.* to root@'%' identified by '123456';
flush privileges;
命令解釋:
*.* 第一個(gè)*表示庫(kù),第二個(gè)*表示表; *.*對(duì)全部數(shù)據(jù)庫(kù)的全部表授權(quán),so.ok 表示只對(duì)so這個(gè)庫(kù)中的ok表授權(quán)
root 表示要給哪個(gè)用戶授權(quán),這個(gè)用戶可以是存在的用戶,也可以是不存在的
'%' 表示允許遠(yuǎn)程連接的IP地址,%代表允許所有IP連接
只允許某個(gè)IP遠(yuǎn)程連接,可以寫成'123.123.123.123'
只允許123.123.123.*這個(gè)網(wǎng)段遠(yuǎn)程連接,可以寫成 '123.123.123.%' '123456' 是設(shè)置授權(quán)用戶的連接密碼
flush privileges; 代表立即刷新權(quán)限表,使添加的用戶生效
上面三步都設(shè)置好了,就可以再次嘗試遠(yuǎn)程連接mysql了。