1.在本機(jī)先使用root用戶(hù)登錄mysql:
我們提供的服務(wù)有:網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、玉門(mén)ssl等。為上千企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢(xún)和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的玉門(mén)網(wǎng)站制作公司
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
mysql的root賬戶(hù),我在連接時(shí)通常用的是localhost或127.0.0.1,公司的測(cè)試服務(wù)器上的mysql也是localhost所以我想訪問(wèn)無(wú)法訪問(wèn),測(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;注意:最后一句很重要,目的是使修改生效.如果沒(méi)有寫(xiě),則還是不能進(jìn)行遠(yuǎn)程連接.
2,授權(quán)用戶(hù),你想root使用密碼從任何主機(jī)連接到mysql服務(wù)器
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'admin123' WITH GRANT OPTION;
flush privileges;
如果你想允許用戶(hù)root從ip為192.168.1.104的主機(jī)連接到mysql服務(wù)器
root默認(rèn)是不支持遠(yuǎn)程登錄的,用外網(wǎng)連接你必須給權(quán)限呢?GRANT ALL PRIVILEGES ON *.* TO'username'@' %' IDENTIFIED BY 'password' WITH GRANT OPTION;你先創(chuàng)建一個(gè)遠(yuǎn)程登錄的賬號(hào)然后給它遠(yuǎn)程登錄的權(quán)限
mysql的root賬戶(hù),我在連接時(shí)通常用的是localhost或127.0.0.1,公司的測(cè)試服務(wù)器上的mysql也是localhost所以我想訪問(wèn)無(wú)法訪問(wèn),測(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; 注意:最后一句很重要,目的是使修改生效.如果沒(méi)有寫(xiě),則還是不能進(jìn)行遠(yuǎn)程連接.
2,授權(quán)用戶(hù),你想root使用密碼從任何主機(jī)連接到mysql服務(wù)器 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'admin123' WITH GRANT OPTION; flush privileges; 如果你想允許用戶(hù)root從ip為192.168.1.104的主機(jī)連接到mysql服務(wù)器 GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.104' IDENTIFIED BY 'admin123' WITH GRANT OPTION; flush privileges;
路由器外網(wǎng)訪問(wèn)mysql數(shù)據(jù)庫(kù)
1.符合以下條件
公網(wǎng)IP 無(wú)論動(dòng)態(tài)還是靜態(tài) 靜態(tài)更好 動(dòng)態(tài)如果嫌麻煩可以用DDNS服務(wù) 如花生殼
2.開(kāi)放端口
無(wú)論你是否是路由連入 還是撥號(hào)連入 路由需要在路由器中做3306端口映射 撥號(hào)寬帶需要在防火墻中允許3306端口訪問(wèn) 可以用telnet命令測(cè)試
3.MYSQL用戶(hù)權(quán)限 (這里比較重要)
在安裝MYSQL是 ROOT默認(rèn)是只有本地訪問(wèn)權(quán)限 localhost可以在安裝的時(shí)候改成可以遠(yuǎn)程remote安裝的最后一步 有個(gè)選項(xiàng)框要勾 這是WINDOWS版本的 如果是LINUX版本用命令加權(quán)限
如果建立新用戶(hù) 一定要要有%遠(yuǎn)程權(quán)限才可以
4測(cè)試
在自帶命令行中測(cè)試 mysql -h(IP地址) -u用戶(hù)名 -p(密碼) 回車(chē)后如果出現(xiàn)mysql
1、首先檢查mysql所在服務(wù)器的防火墻,如果限制了外網(wǎng)對(duì)3306端口的連接,那么放開(kāi)限制
Linux服務(wù)器中執(zhí)行
iptables -L 可以查看當(dāng)前的防火墻規(guī)則
iptables -F 可以清空所有防火墻規(guī)則
2、確保mysql的監(jiān)聽(tīng)地址是0.0.0.0
監(jiān)聽(tīng)地址是0.0.0.0 ,表示該mysql允許所有IP地址進(jìn)行連接,這是允許遠(yuǎn)程連接的基礎(chǔ)
監(jiān)聽(tīng)地址是127.0.0.1,則代表該mysql只允許所在服務(wù)器本機(jī)連接,外網(wǎng)是無(wú)法連接的
怎么知道m(xù)ysql的監(jiān)聽(tīng)地址是多少
Linux服務(wù)器中執(zhí)行如下命令可以查看: netstat -nutlp|grep mysql
3、添加遠(yuǎn)程連接mysql的賬號(hào)
此步驟是必須要操作的,mysql本身的用戶(hù)只能在本機(jī)上連接數(shù)據(jù)庫(kù),外網(wǎng)連接的話(huà),需要先添加遠(yuǎn)程用戶(hù)并授權(quán)。
在mysql命令行模式下,或者phpmyadmin中執(zhí)行sql語(yǔ)句添加遠(yuǎn)程連接用戶(hù)
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è)用戶(hù)授權(quán),這個(gè)用戶(hù)可以是存在的用戶(hù),也可以是不存在的
'%' 表示允許遠(yuǎn)程連接的IP地址,%代表允許所有IP連接
只允許某個(gè)IP遠(yuǎn)程連接,可以寫(xiě)成'123.123.123.123'
只允許123.123.123.*這個(gè)網(wǎng)段遠(yuǎn)程連接,可以寫(xiě)成 '123.123.123.%' '123456' 是設(shè)置授權(quán)用戶(hù)的連接密碼
flush privileges; 代表立即刷新權(quán)限表,使添加的用戶(hù)生效
上面三步都設(shè)置好了,就可以再次嘗試遠(yuǎn)程連接mysql了。
一臺(tái)電腦上安裝了Workbench,現(xiàn)需要訪問(wèn)另一臺(tái)ubuntu服務(wù)器上的MySQL數(shù)據(jù)庫(kù),但mysql默認(rèn)是不允許訪問(wèn)的,考慮到安全性問(wèn)題,也不適合使用root用戶(hù)來(lái)訪問(wèn)mysql。
這時(shí)我們就需要開(kāi)放mysql服務(wù)器并創(chuàng)建新的用戶(hù)來(lái)訪問(wèn)mysql。
1,開(kāi)放mysql
mysql的配置文件在/etc/mysql/my.cnf文件內(nèi),里面有一行bind-address = 127.0.0.1表示只允許本地訪問(wèn),將這行注釋即可
2,創(chuàng)建新的mysql用戶(hù)
(1)首先在本地進(jìn)入mysql數(shù)據(jù)庫(kù)的mysql庫(kù)內(nèi)
(2)創(chuàng)建用戶(hù):GRANT ALL ON *.* to user@'IP' IDENTIFIED BY 'password'; 其中user表示需要?jiǎng)?chuàng)建用戶(hù)的名字;IP表示哪臺(tái)客戶(hù)端想要訪問(wèn)mysql數(shù)據(jù)庫(kù);password表示密碼;并賦予所有的權(quán)限。
(3)FLUSH PRIVILEGES; 刷新mysql的系統(tǒng)權(quán)限相關(guān)表,否則會(huì)出現(xiàn)拒絕訪問(wèn)。重啟數(shù)據(jù)庫(kù)也能達(dá)到這樣的效果