本文提供了三種解決方法:
為黃浦等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及黃浦網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、黃浦網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
1、改表法??赡艹啄鉪帳號(hào)不允許從遠(yuǎn)程登陸,只能在localhost。這個(gè)時(shí)候只要在localhostd那臺(tái)電腦,登入mysql后,更改
"mysql"
數(shù)據(jù)庫里d
"user"
表里d
"host"
項(xiàng),從"localhost"改稱"%"
mysql
-u
root
-pvmwaremysqluse
mysql;
mysqlupdate
user
set
host
=
'%'
where
user
=
'root';
mysqlselect
host,
user
from
user;
2、授權(quán)法。
GRANT
ALL
PRIVILEGES
ON
*.*
TO
'myuser'@'%'IDENTIFIED
BY
'mypassword'
WI
TH
GRANT
OPTION;
如果你想允許用戶myuser從ip為192.168.1.6d主機(jī)連接到mysql服務(wù)器,并使用mypassword作為密碼
GRANT
ALL
PRIVILEGES
ON
*.*
TO
'myuser'@'192.168.1.3'IDENTIFIED
BY
'mypassword'
WITH
GRANT
OPTION;
我用d第一個(gè)方法,剛開始發(fā)現(xiàn)不行,在網(wǎng)上查了一下,少執(zhí)行一個(gè)語句
mysqlFLUSH
RIVILEGES
使修改生效,就可以了
另外一種方法:
在安裝mysqld機(jī)器上運(yùn)行:
1、d:/mysql/bin/mysql
-h
localhost
-u
root
//這樣應(yīng)該可以進(jìn)入MySQL服務(wù)器
2、mysqlGRANT
ALL
PRIVILEGES
ON
*.*
TO
'root'@'%'WITH
GRANT
OPTION
//賦予任何主機(jī)訪問數(shù)據(jù)d權(quán)限
3、mysqlFLUSH
PRIVILEGES
//修改生效
4、mysqlEXIT
//退出MySQL服務(wù)器
這樣就可以在其它任何d主機(jī)上以root身份登錄啦。
MySQL我用的是apt安裝的,有很多問題,建議大家用二進(jìn)制程序安裝。
問題描述
在服務(wù)器上登錄MySQL只能用本地的127.0.0.1地址,用服務(wù)器本身地址會(huì)提示拒絕訪問
嘗試修改MySQL遠(yuǎn)程訪問權(quán)限
修改后發(fā)現(xiàn)沒有用,MySQL依然拒絕遠(yuǎn)程訪問
查看3306端口
root@sfpql:~# netstat -an|grep 3306
修改MySQL服務(wù)地址:
嘗試遠(yuǎn)程連接
telnet sfpql 3306
結(jié)語
MySQL遠(yuǎn)程連接不上是常見問題,一般設(shè)置好MySQL的遠(yuǎn)程訪問權(quán)限就可以了。
apt安裝的MySQL會(huì)自己將啟動(dòng)地址設(shè)置在本地,同時(shí)apt安裝的MySQL的服務(wù)查看命令是 systemctl status mysql 其他安裝方式的常看命令是 systemctl status mysqld
解決辦法如下:
1、在服務(wù)器端,打開cmd窗口,進(jìn)入mysql
安裝目錄bin
下,輸入mysql
-u
root
-p,然后回車,輸入密碼后回車進(jìn)入mysql命令行。
2、輸入use
mysql;
3、輸入select
user,host
from
user;
可以看到host中只有l(wèi)ocalhost主機(jī)。我們需要將xxx.xxx.xxx.xxx也添加到這里才對(duì)。
4、
添加方法如下:
輸入
grant
all
privileges
on
*.*
to
root@"xxx.xxx.xxx.xxx"
identified
by
"密碼";
這相當(dāng)于是給IP-xxx.xxx.xxx.xxx賦予了所有的權(quán)限,包括遠(yuǎn)程訪問權(quán)限。
然后再輸入
flush
privileges;
這相當(dāng)于是重新加載一下mysql權(quán)限,這一步必須有。
5、再次輸入select
user,host
from
user;
可以看到host中已經(jīng)有了新加的IP。
6、再次在客戶端用Navicat
for
MySQl訪問遠(yuǎn)程mysql數(shù)據(jù)庫,已經(jīng)能正常打開了。
遠(yuǎn)程服務(wù)器連接MySQL,需要?jiǎng)?chuàng)建一個(gè)允許遠(yuǎn)程訪問的用戶。
創(chuàng)建用戶:
CREATE USER'username'@'host' IDENTIFIED BY 'password';
其中username 是用戶名,host是可以進(jìn)行遠(yuǎn)程訪問數(shù)據(jù)庫的服務(wù)器地址。
給用戶授權(quán):
GRANT privileges ONdatabasename.tablename TO 'username'@'host';
給'username'@'host'用戶進(jìn)行授權(quán),其中privileges是要授予的權(quán)限,可以是all privileges、select、update等。databasename.tablename是要訪問的某個(gè)數(shù)據(jù)庫中的某張表,如果是所有的,則可以用*。
一、配置mysql允許遠(yuǎn)程鏈接
默認(rèn)情況下,mysql帳號(hào)不允許從遠(yuǎn)程登陸,只能在localhost登錄。這里提供了二種方法設(shè)置mysql可以通過遠(yuǎn)程主機(jī)進(jìn)行連接。
1、改表法
在localhost登入mysql后,更改
"mysql"
數(shù)據(jù)庫里的
"user"
表里的
"host"
項(xiàng),將"localhost"改稱"%"
例如:
#mysql
-u
root
-p
enter
password:
……
mysql
mysqlupdate
user
set
host
=
'%'
where
user
=
'root';
mysqlselect
host,
user
from
user;
2、授權(quán)法
例如:
你想myuser使用mypassword(密碼)從任何主機(jī)連接到mysql服務(wù)器的話。
mysqlgrant
all
privileges
on
*.*
to
'myuser'@'%'identified
by
'mypassword'
with
grant
option;
如果你想允許用戶myuser從ip為192.168.1.6的主機(jī)連接到mysql服務(wù)器,并使用mypassword作為密碼
mysqlgrant
all
privileges
on
*.*
to
'myuser'@'192.168.1.3'identified
by
'mypassword'
with
grant
option;
mysqlflush
privileges
使修改生效,就可以了。
二、連接遠(yuǎn)程數(shù)據(jù)庫:
1、顯示密碼
如:mysql
連接遠(yuǎn)程數(shù)據(jù)庫(192.168.5.116),端口“3306”,用戶名為“root”,密碼“123456”
c:/mysql
-h
192.168.5.116
-p
3306
-u
root
-p123456
2、隱藏密碼
如:mysql
連接本地?cái)?shù)據(jù)庫,用戶名為“root”,
c:/mysql
-h
localhost
-u
root
-p
enter
password:
原因是MySQL默認(rèn)不支持遠(yuǎn)程連接,(那么phpMyAdmin為什么可以連接呢?那是因?yàn)閜hpMyadmin的環(huán)境是上傳到服務(wù)器的,其本身訪問數(shù)據(jù)庫是相當(dāng)于本機(jī)localhost訪問的),如果想遠(yuǎn)程訪問,可以使用下面的方法來解決。
遠(yuǎn)程連接mysql數(shù)據(jù)庫時(shí)出現(xiàn)如下提示信息:“MYSQL CONNECT ERROR – 1130:Host ’202.43.**.**’ is not allowed to connect to this MySQL server”
在創(chuàng)建mysql賬戶時(shí),限制連接賬戶遠(yuǎn)程登錄。也就是說,除了當(dāng)前mysql所在的安裝服務(wù)器外,其他的ip(主機(jī))都是不允許訪問的,即使你的用戶名和密碼是正確的。這時(shí)候就要修改用戶的訪問權(quán)限。
首先是用root用戶登錄到mysql的安裝主機(jī),然后進(jìn)入mysql:
mysql -u root -p
root是mysql的最高授權(quán)用戶名,這時(shí)會(huì)提示你輸入密碼,正確輸入密碼后回車,進(jìn)入mysql?;剀?/p>
然后輸入如下命令:
grant all on 數(shù)據(jù)庫名.* to ‘?dāng)?shù)據(jù)庫賬戶名’@’%’ identified by ‘密碼’ with grant option;
回車
flush privileges;
回車
注意:上面的單引號(hào)不能省,數(shù)據(jù)庫名.* 表示要開放的數(shù)據(jù)庫下所有表,如果該連接的所有數(shù)據(jù)庫都要開放,可以用 *.* 代替。
‘?dāng)?shù)據(jù)庫賬戶名’@’%’ 這里表示要開放的賬戶,百分號(hào)表示在任何主機(jī)都允許訪問。
如果以上兩步均顯示 “Query OK, 0 rows affected (0.00 sec)”,那么說明命令已經(jīng)成功執(zhí)行,現(xiàn)在就可以遠(yuǎn)程連接你的mysql數(shù)據(jù)庫了。
(1).如果想賦予所有操作的權(quán)限
grant all on ... to 用戶名......
(2).如果想賦予操作所有數(shù)據(jù)庫的所有表的權(quán)限
grant ... on *.* to 用戶名......
(3).如果想賦予某個(gè)數(shù)據(jù)庫的所有表
grant ... on 數(shù)據(jù)庫名稱.'*' to 用戶名...... ([ * ]兩邊一定要加單引號(hào))
(4).如果想賦予某個(gè)數(shù)據(jù)庫的某張表
grant ... on 數(shù)據(jù)庫名稱.表名 to 用戶名......
(5).如果想任何客戶端都能通過該用戶名遠(yuǎn)程訪問
grant ... on ... to 用戶名@% ....... (要把IP地址改成[ % ])
(6).改完了以后一定要重新啟動(dòng)MySQL服務(wù)
用戶會(huì)存到Mysql服務(wù)器上的user表中,所以下面的兩種方法都可以解決這個(gè)問題:
1。 改表法??赡苁悄愕膸ぬ?hào)不允許從遠(yuǎn)程登陸,只能在localhost。這個(gè)時(shí)候只要在localhost的那臺(tái)電腦,登入mysql后,更改 "mysql" 數(shù)據(jù)庫里的 "user" 表里的 "host" 項(xiàng),從"localhost"改稱"%"
mysql -u root -p
mysqluse mysql;
mysqlupdate user set host = ’%’ where user = ’root’;mysqlselect host, user from user;
mysqlflush privileges;
2. 授權(quán)法。例如,你想myuser使用mypassword從任何主機(jī)連接到mysql服務(wù)器的話。
GRANT ALL PRIVILEGES ON *.* TO ’myuser’@’%’ IDENTIFIED BY ’mypassword’ WITH GRANT OPTION;
如果你想允許用戶myuser從ip為192.168.1.3的主機(jī)連接到mysql服務(wù)器,并使用mypassword作為密碼
GRANT ALL PRIVILEGES ON *.* TO ’myuser’@’192.168.1.3’ IDENTIFIED BY ’mypassword’ WITH GRANT OPTION;
如果還是無法遠(yuǎn)程我們可參考
1、Mysql的端口是否正確,通過netstat -ntlp查看端口占用情況,一般情況下端口是3306。在用工具連接MySQl是要用到端口。例如My AdminMy Query BrowserMySQl Front等。
2、檢查用戶權(quán)限是否正確。
例如:用戶Tester,user表里有兩條記錄:host分別為localhost和%(為了安全,%可以換成你需要外部連接的IP)。
3、查看/etc/my.cnf中,skip-networking 是否已被注掉,需要注掉。
報(bào)錯(cuò):ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.51.112' (111)
4、查看iptables是否停掉,沒關(guān)的情況下,無法連接。
通過:service iptables stop臨時(shí)關(guān)閉。
報(bào)錯(cuò):ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.51.112' (113)
另外,我們還可以通過配置http通道來使Navicat遠(yuǎn)程連接到數(shù)據(jù)庫,這樣做的好處是不需要前面繁雜的配置。在主機(jī)名IP地址那里填寫LocalHost
用戶名與密碼一欄則填寫你所在的數(shù)據(jù)庫用戶名與密碼。
這時(shí)候還不能連接數(shù)據(jù)庫的,需要通過Http通道的形式進(jìn)行數(shù)據(jù)庫連接。
點(diǎn)擊連接屬性標(biāo)簽欄中的Http,如下圖所示:
勾選使用Http通道后,在通道地址一欄輸入你的網(wǎng)址與后臺(tái)文件地址。