是root用戶的話,IP就是localhost或127.0.0.1,只是代表使用本機,不是代表本機IP地址,操作方法如下:
創(chuàng)新互聯(lián)是一家專業(yè)提供磐安企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、網(wǎng)站制作、成都h5網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為磐安眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進行中。
1、首先,利用Navicat創(chuàng)建一個數(shù)據(jù)庫和表,數(shù)據(jù)庫名為testdb,表為userinfo,并添加一條新記錄。
2、用如下的數(shù)據(jù)庫連接字符串訪問數(shù)據(jù)庫時,是沒有問題的。Driver = MySQL ODBC 5.1 Driver; Server = localhost; Port=3306; DATABASE = testdb; user = root; password = 123456。
3、其中,Server是數(shù)據(jù)庫所在主機IP地址,Prot是連接端口;user和password則為連接數(shù)據(jù)庫的用戶名和密碼,使用Select * from userinfo 可以正確獲取到數(shù)據(jù)。
4、但是當(dāng)把localhost換成實際的IP地址的時候,就報錯了,說明這個數(shù)據(jù)庫testdb是默認(rèn)沒開啟訪問權(quán)限的,默認(rèn)情況下只允許localhost和127.0.0.1訪問。
5、更新root賬戶的權(quán)限。打開mysql命令行窗口,輸入grant all privileges on *.* to root@"%" identified by 'abc' with grant option;??flush privileges。
6、創(chuàng)建一個新賬戶,如guest,并將可被訪問的主機定義為%,即所有主機都可訪問該賬戶。測試,沒有問題。
1、首先檢查mysql所在服務(wù)器的防火墻,如果限制了外網(wǎng)對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地址進行連接,這是允許遠(yuǎn)程連接的基礎(chǔ)
監(jiān)聽地址是127.0.0.1,則代表該mysql只允許所在服務(wù)器本機連接,外網(wǎng)是無法連接的
怎么知道m(xù)ysql的監(jiān)聽地址是多少
Linux服務(wù)器中執(zhí)行如下命令可以查看: netstat -nutlp|grep mysql
3、添加遠(yuǎn)程連接mysql的賬號
此步驟是必須要操作的,mysql本身的用戶只能在本機上連接數(shù)據(jù)庫,外網(wǎng)連接的話,需要先添加遠(yuǎn)程用戶并授權(quán)。
在mysql命令行模式下,或者phpmyadmin中執(zhí)行sql語句添加遠(yuǎn)程連接用戶
grant all on *.* to root@'%' identified by '123456';
flush privileges;
命令解釋:
*.* 第一個*表示庫,第二個*表示表; *.*對全部數(shù)據(jù)庫的全部表授權(quán),so.ok 表示只對so這個庫中的ok表授權(quán)
root 表示要給哪個用戶授權(quán),這個用戶可以是存在的用戶,也可以是不存在的
'%' 表示允許遠(yuǎn)程連接的IP地址,%代表允許所有IP連接
只允許某個IP遠(yuǎn)程連接,可以寫成'123.123.123.123'
只允許123.123.123.*這個網(wǎng)段遠(yuǎn)程連接,可以寫成 '123.123.123.%' '123456' 是設(shè)置授權(quán)用戶的連接密碼
flush privileges; 代表立即刷新權(quán)限表,使添加的用戶生效
上面三步都設(shè)置好了,就可以再次嘗試遠(yuǎn)程連接mysql了。
/etc/mysql/my點吸煙 f
找到 bind-address =127.0.0.1 將其注釋掉;//作用是使得不再只允許本地訪問;
重啟mysql:/etc/init.d/mysql restart;
2:登錄mysql數(shù)據(jù)庫:mysql -u root -p
mysql use mysql;
查詢host值:
mysql select user,host from user;
如果沒有"%"這個host值,就執(zhí)行下面這兩句:
mysql update user set host='%' where user='root';
mysql flush privileges;
或者也可以執(zhí)行:
mysqlgrand all privileges on *.* to root@'%' identifies by ' xxxx';
其中 第一個*表示數(shù)據(jù)庫名;第二個*表示該數(shù)據(jù)庫的表名;如果像上面那樣 *.*的話表示所有到數(shù)據(jù)庫下到所有表都允許訪問;
‘%':表示允許訪問到mysql的ip地址;當(dāng)然你也可以配置為具體到ip名稱;%表示所有ip均可以訪問;
后面到‘xxxx'為root 用戶的password;