首先讓我們看一下遠(yuǎn)端MYSQL的用戶表
創(chuàng)新互聯(lián)公司致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營銷,包括成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、SEO優(yōu)化、網(wǎng)絡(luò)推廣、整站優(yōu)化營銷策劃推廣、電子商務(wù)、移動(dòng)互聯(lián)網(wǎng)營銷等。創(chuàng)新互聯(lián)公司為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制及解決方案,創(chuàng)新互聯(lián)公司核心團(tuán)隊(duì)十載專注互聯(lián)網(wǎng)開發(fā),積累了豐富的網(wǎng)站經(jīng)驗(yàn),為廣大企業(yè)客戶提供一站式企業(yè)網(wǎng)站建設(shè)服務(wù),在網(wǎng)站建設(shè)行業(yè)內(nèi)樹立了良好口碑。
mysql select host,user
- from user;
+---------------+------+
| host | user |
+---------------+------+
| localhost | root |
+---------------+------+
5 rows in set (0.00 sec)
由此我們可以看到root用戶僅允許本地(localhost)登錄,如果要遠(yuǎn)程登錄該mysql服務(wù)器的話,就需要新建一個(gè)普通權(quán)限的用戶,新建用戶使用如下命令:
mysql grant select,update,insert,delete on mas.* to duan@localhost identified by "123456";
這句命令的意思是:新建用戶duan,并且只允許該用戶在本地(localhost)登錄,密碼是123456,并且賦予它對(duì)mas庫中所有表select,update,insert的權(quán)限。我們在這有一個(gè)mas庫,所以用mas.*代表mas庫下的所有表。如果要對(duì)所有的表,包括mysql庫的表都有操作權(quán)限則可以替換成“*.*”.
現(xiàn)在該duan用戶,已經(jīng)可以登錄mysql了,但是也還是只能本地登錄。若要duan用戶可以遠(yuǎn)程登錄mysql,則還需要如下命令:
mysql update user set host = '%' where user = 'duan';
開啟 MySQL 的遠(yuǎn)程登陸帳號(hào)有兩大步:
1、確定服務(wù)器上的防火墻沒有阻止 3306 端口。
MySQL 默認(rèn)的端口是 3306 ,需要確定防火墻沒有阻止 3306 端口,否則遠(yuǎn)程是無法通過 3306 端口連接到 MySQL 的。
如果您在安裝 MySQL 時(shí)指定了其他端口,請?jiān)诜阑饓χ虚_啟您指定的 MySQL 使用的端口號(hào)。
如果不知道怎樣設(shè)置您的服務(wù)器上的防火墻,請向您的服務(wù)器管理員咨詢。
2、增加允許遠(yuǎn)程連接 MySQL 用戶并授權(quán)。
1)首先以 root 帳戶登陸 MySQL
在 Windows 主機(jī)中點(diǎn)擊開始菜單,運(yùn)行,輸入“cmd”,進(jìn)入控制臺(tái),MySQL 的 bin 目錄下,然后輸入下面的命令。
在 Linux 主機(jī)中在命令提示行下輸入下面的命令。
CODE: [COPY]
MySQL -uroot -p123456
123456 為 root 用戶的密碼。
2)創(chuàng)建遠(yuǎn)程登陸用戶并授權(quán)
CODE: [COPY]
grant all PRIVILEGES on discuz.* to ted@'123.123.123.123' identified by '123456';
上面的語句表示將 discuz 數(shù)據(jù)庫的所有權(quán)限授權(quán)給 ted 這個(gè)用戶,允許 ted 用戶在 123.123.123.123 這個(gè) IP 進(jìn)行遠(yuǎn)程登陸,并設(shè)置 ted 用戶的密碼為 123456 。
下面逐一分析所有的參數(shù):
all PRIVILEGES 表示賦予所有的權(quán)限給指定用戶,這里也可以替換為賦予某一具體的權(quán)限,例如:select,insert,update,delete,create,drop 等,具體權(quán)限間用“,”半角逗號(hào)分隔。
discuz.* 表示上面的權(quán)限是針對(duì)于哪個(gè)表的,discuz 指的是數(shù)據(jù)庫,后面的 * 表示對(duì)于所有的表,由此可以推理出:對(duì)于全部數(shù)據(jù)庫的全部表授權(quán)為“*.*”,對(duì)于某一數(shù)據(jù)庫的全部表授權(quán)為“數(shù)據(jù)庫名.*”,對(duì)于某一數(shù)據(jù)庫的某一表授 權(quán)為“數(shù)據(jù)庫名.表名”。
ted 表示你要給哪個(gè)用戶授權(quán),這個(gè)用戶可以是存在的用戶,也可以是不存在的用戶。
123.123.123.123 表示允許遠(yuǎn)程連接的 IP 地址,如果想不限制鏈接的 IP 則設(shè)置為“%”即可。
123456 為用戶的密碼。
執(zhí)行了上面的語句后,再執(zhí)行下面的語句,方可立即生效。
CODE: [COPY]
flush privileges;
第一:更改 “mysql” 數(shù)據(jù)庫里的 “user” 表里的 “host” 項(xiàng),從”localhost”改稱'%'。 \x0d\x0a或者新加條記錄,“host” 項(xiàng)為要訪問的ip地址,并授權(quán)。重啟mysql服務(wù)。 \x0d\x0a第二:在系統(tǒng)防火墻添加例外端口:3306,并允許例外。 \x0d\x0a\x0d\x0a錯(cuò)誤提示: \x0d\x0aERROR 1130: Host '192.168.1.3is not allowed to connect to this MySQL server \x0d\x0a的解決方法: \x0d\x0a1。改表法??赡苁悄愕膸ぬ?hào)不允許從遠(yuǎn)程登陸,只能在localhost。這個(gè)時(shí)候只要在localhost的那臺(tái)電腦,登入mysql后,更改 "mysql" 數(shù)據(jù)庫里的 "user" 表里的 "host" 項(xiàng),從"localhost"改稱"%" \x0d\x0a1.mysql -u root -pvmware\x0d\x0amysqluse mysql;\x0d\x0amysqlupdate user set host = '%where user = 'root';\x0d\x0amysqlselect host, user from user; \x0d\x0a\x0d\x0a2. 授權(quán)法。例如,你想myuser使用mypassword從任何主機(jī)連接到mysql服務(wù)器的話。 \x0d\x0a\x0d\x0aGRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%IDENTIFIED BY 'mypasswordWITH GRANT OPTION; \x0d\x0a如果你想允許用戶myuser從ip為192.168.1.3的主機(jī)連接到mysql服務(wù)器,并使用mypassword作為密碼 \x0d\x0aGRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3IDENTIFIED BY 'mypasswordWITH GRANT OPTION; \x0d\x0a\x0d\x0a3.在window自帶的防火墻里的例外添加3306端口 \x0d\x0a\x0d\x0a總結(jié): \x0d\x0amysql -u root -p \x0d\x0amysqluse mysql; \x0d\x0amysqlselect 'hostfrom user where user='root'; \x0d\x0amysqlupdate user set host = '%where user ='root'; \x0d\x0amysqlflush privileges; \x0d\x0amysqlselect 'host from user where user='root'; \x0d\x0a第一句是以權(quán)限用戶root登錄 \x0d\x0a第二句:選擇mysql庫 \x0d\x0a第三句:查看mysql庫中的user表的host值(即可進(jìn)行連接訪問的主機(jī)/IP名稱) \x0d\x0a第四句:修改host值(以通配符%的內(nèi)容增加主機(jī)/IP地址),當(dāng)然也可以直接增加IP地址 \x0d\x0a第五句:刷新MySQL的系統(tǒng)權(quán)限相關(guān)表 \x0d\x0a第六句:再重新查看user表時(shí),有修改。。 \x0d\x0a重起mysql服務(wù)即可完成。