本文目錄一覽:
- 1、如何開啟MySQL的遠程帳號
- 2、mysql默認不支持遠程連接,需要grant授權。
- 3、mysql中使用任意主機的用戶怎麼登陸
- 4、mysql如何刪除HostName賬號和localhost賬號
- 5、怎麼解決mysql不允許遠程連接的錯誤
如何開啟MySQL的遠程帳號
開啟 MySQL 的遠程登陸帳號有兩大步:
1、確定服務器上的防火牆沒有阻止 3306 端口。
MySQL 默認的端口是 3306 ,需要確定防火牆沒有阻止 3306 端口,否則遠程是無法通過 3306 端口連接到 MySQL 的。
如果您在安裝 MySQL 時指定了其他端口,請在防火牆中開啟您指定的 MySQL 使用的端口號。
如果不知道怎樣設置您的服務器上的防火牆,請向您的服務器管理員諮詢。
2、增加允許遠程連接 MySQL 用戶並授權。
1)首先以 root 帳戶登陸 MySQL
在 Windows 主機中點擊開始菜單,運行,輸入“cmd”,進入控制台,MySQL 的 bin 目錄下,然後輸入下面的命令。
在 Linux 主機中在命令提示行下輸入下面的命令。
CODE: [COPY]
MySQL -uroot -p123456
123456 為 root 用戶的密碼。
2)創建遠程登陸用戶並授權
CODE: [COPY]
grant all PRIVILEGES on discuz.* to ted@’123.123.123.123′ identified by ‘123456’;
上面的語句表示將 discuz 數據庫的所有權限授權給 ted 這個用戶,允許 ted 用戶在 123.123.123.123 這個 IP 進行遠程登陸,並設置 ted 用戶的密碼為 123456 。
下面逐一分析所有的參數:
all PRIVILEGES 表示賦予所有的權限給指定用戶,這裡也可以替換為賦予某一具體的權限,例如:select,insert,update,delete,create,drop 等,具體權限間用“,”半角逗號分隔。
discuz.* 表示上面的權限是針對於哪個表的,discuz 指的是數據庫,後面的 * 表示對於所有的表,由此可以推理出:對於全部數據庫的全部表授權為“*.*”,對於某一數據庫的全部表授權為“數據庫名.*”,對於某一數據庫的某一表授 權為“數據庫名.表名”。
ted 表示你要給哪個用戶授權,這個用戶可以是存在的用戶,也可以是不存在的用戶。
123.123.123.123 表示允許遠程連接的 IP 地址,如果想不限制鏈接的 IP 則設置為“%”即可。
123456 為用戶的密碼。
執行了上面的語句後,再執行下面的語句,方可立即生效。
CODE: [COPY]
flush privileges;
—————————————————————————————————————–
解決方法:
1、改表法:
可能是你的帳號不允許從遠程登陸,只能在localhost。這個時候只要在localhost的那台電腦,登入mysql後,更改 “mysql” 數據庫里的 “user” 表裡的 “host” 項,從“localhost”改稱“%”
x:\mysql -u root -pvmware
mysql use mysql;
mysql update user set host = ‘%’ where user = ‘root’;
mysql select host, user from user;
mysql flush privileges;
註:mysql flush privileges; 使修改生效。
2、授權法:
例如,你想myuser使用mypassword從任何主機連接到mysql服務器的話。
mysql GRANT ALL PRIVILEGES ON *.* TO ‘myuser’@’%’ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;
如果你想允許用戶myuser從ip為192.168.1.3的主機連接到mysql服務器,並使用mypassword作為密碼
mysql GRANT ALL PRIVILEGES ON *.* TO ‘myuser’@’192.168.1.3’ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;
轉自:
——————————————————————————————————————————————————————————————–
二、問如何開啟MySQL的遠程連接
Q:
最近學習PHP,裝了個phpwind論壇和FTP流量插件,需要遠程連接MySQL數據庫.不知道如何打開本地服務器的遠程連接.現在本地服務器上的論壇和FTP流量插件都運行正常,在另一台服務器上安裝插件,連不上數據庫.到PW官方求助沒人回貼.因此來這尋求幫助.
服務器信息
PHP程式版本: 4.3.11
MySQL 版本: 4.1.10-nt
服務器端信息: Microsoft-IIS/5.0
裝有phpMyAdmin
A1:
遠程連接到MySQL需要做的
1. 進入MySQL,創建一個新用戶xuys:
格式: grant 權限 on 數據庫名.表名 用戶@登錄主機 identified by “用戶密碼”;
grant select,update,insert,delete on *.* to xuys@192.168.88.234 identified by “xuys1234”;
查看結果,執行:
use mysql;
select host,user,password from user;
可以看到在user表中已有剛才創建的xuys用戶,host字段表示登錄的主機,其值可以用IP,也可用主機名,將host字段的值改為%就表示在任何客戶端機器上能以xuys用戶登錄到MySQL服務器,建議在開發時設為%.
update user set host = ‘%’ where user = ‘xuys’;
2.
./mysqladmin -u root -p pwd reload
./mysqladmin -u root -p pwd shutdown
3.
./mysqld_safe –user=root
記住: 對授權表的任何修改都需要重新reload,即執行第3步.
如果經過以上3個步驟還是無法從客戶端連接,請執行以下操作,在MySQL數據庫的db表中插入一條記錄:
use mysql;
insert into db values(‘192.168.88.234′,’%’,’xuys’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’);
update db set host = ‘%’ where user = ‘xuys’;
重複執行上面的第2,3步.
A2:
Web與MySQL數據庫分離開來是一個不錯的選擇,避免因為大量的數據庫查詢佔用CPU而使Web資源不足,同時可以使Web服務器的資源盡最大的提供瀏覽服務,而數據庫服務器單獨的只處理數據庫事務.
我對這方面的原理不甚太十分了解,我的做法其實就是下面要說的,很簡單.大家有更好的經驗和技巧不妨提出來分享一下.
適用範圍: 擁有獨立主機權限
硬件配置: 兩台服務器,至於具體服務器硬件配置就不在本文範圍內了
其中: A為Web服務器(假設IP為: 192.192.192.192),B為MySQL數據服務器(假設IP為: 168.168.168.168)
着手動作:
1. 在Web服務器A配置好Web服務.關於這方面文章很多了.假設Web服務器的IP為: 192.192.192.192
2. 在數據庫服務器B安裝好MySQL服務
3. 現在新版的MySQL一般默認都不允許遠程連接的,需要建立遠程連接賬號才可以
以命令行方式使用root賬號進入MySQL
mysql -u root -p pass
選擇進入MySQL數據庫
use mysql;
查看所有存在的賬號和地址
SELECT `Host`,`User` FROM `user`;
比如我的就是:
+————+——-+
| Host | User |
+————+——-+
| localhost | |
| localhost | pma |
| localhost | root |
+————+——-+
3 rows in set (0.00 sec)
也就是說,存在三個只允許本地連接的(localhost)賬號,分別為root,pma,空用戶.
現在決定讓root具有上面那個Web服務器A的遠程鏈接的權限,那麼就這樣:
UPDATE `user` SET `Host` = ‘192.192.192.192’ WHERE `User` = ‘root’ LIMIT 1;
這樣192.192.192.192這台Web服務器就可以遠程連接到這個數據庫服務器了,假如你想讓任何遠程機器都可以連接這個數據庫,就將192.192.192.192換為%,不過不建議這樣做,原因你知道啦!
假如你想新建一個用戶new_user具備遠程鏈接的權限的話,就這樣:
INSERT INTO `user` ( `Host` , `User` , `Password` , `Select_priv` , `Insert_priv` , `Update_priv` , `Delete_priv` , `Create_priv` , `Drop_priv` , `Reload_priv` , `Shutdown_priv` , `Process_priv` , `File_priv` , `Grant_priv` , `References_priv` , `Index_priv` , `Alter_priv` , `Show_db_priv` , `Super_priv` , `Create_tmp_table_priv` , `Lock_tables_priv` , `Execute_priv` , `Repl_slave_priv` , `Repl_client_priv` , `ssl_type` , `ssl_cipher` , `x509_issuer` , `x509_subject` , `max_questions` , `max_updates` , `max_connections` ) VALUES (‘192.192.192.192’, ‘new_user’, PASSWORD( ‘new_user_password’ ) , ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ”, ”, ”, ”, ‘0’, ‘0’, ‘0’);
將new_user改為你想要的名字就可以了,密碼是: new_user_password,當然你可以隨意設置.
當你的數據庫可以遠程連接後,你就可以在你的Web服務器的論壇config.inc.php中設置$dbhost變量為你的MySQL數據庫服務器B的IP了:
$dbhost = ‘168.168.168.168’;
實際操作中,最好兩台機器在同一個機房的同一網段/防火牆內.當然如果有可能的話,將數據庫服務器放置於Web服務器網絡內的局域網中就更好了.
Q3:
還是這樣簡潔些:
grant all on yourdb.* to yourUsername@yourHost identified by “yourPassword”;
flush privileges; //使權限立刻生效
mysql默認不支持遠程連接,需要grant授權。
GRANT ALL PRIVILEGES ON *.* TO ‘數據庫名’@’%’ IDENTIFIED BY ‘數據庫密碼’ WITH GRANT OPTION;這是應許任何地方遠程鏈接數據庫的命令,下面可以設置只應許一個ip鏈接的實例;GRANT ALL PRIVILEGES ON *.* TO ‘yk’@’222.210.228.135’ IDENTIFIED BY ‘1234
56′ WITH GRANT OPTION;這是在客戶端鏈接mysql服務器數據庫的命令;mysql -h 100.100.100.100 -uroot -ptest我們都習慣了在自己的機子上面安裝Mysql,然後用SQLyog等客戶端軟件來連接,今天試了一下連接遠程的mysql數據庫服務器,結果彈出一串的英文,意思好像是說客戶機沒有得到許可,不能訪問數據庫,在google搜了一下,使用這種方法解決了:
1、進入mysql,創建一個新用戶kay:
2、 格式:grant 權限 on 數據庫名.表名 用戶@登錄主機 identified by “用戶密碼”;
grant select,update,insert,delete on *.* to kay@192.168.1.8 identified by “kaypass”;
3、 查看結果,執行:
use mysql;
select host,user,password from user;
可以看到在user表中已有剛才創建的kay用戶。host字段表示登錄的主機,其值可以用IP,也可用主機名,
將host字段的值改為%就表示在任何客戶端機器上能以kay用戶登錄到mysql服務器,建議在開發時設為%。
update user set host = ‘%’ where user = ‘kay’;
還有一下方法:(我沒有試,僅供參考):
A、 ./mysqladmin -uroot -p21century reload
./mysqladmin -uroot -p21century shutdown
B、./mysqld_safe –user-root
記住:對授權表的任何修改都需要重新reload,即執行第3步。 如果經過以上3個步驟還是無法從客戶端連接,請執行以下操作,在mysql數據庫的db表中插入一條記錄:
use mysql;
insert into db values(‘192.168.88.234′,’%’,’xuys’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’,’Y’);
update db set host = ‘%’ where user = ‘xuys’;
重複執行上面的第2、3步。
mysql中使用任意主機的用戶怎麼登陸
您好.
-h 是指你的MYSQL數據庫所在的主機,不是你當前的主機
你當前用戶所在的 host 是由MYSQL根據你的IP或者主機名自動判斷的。
你只需要
mysql -uniunan -p12345就行了。
MySQL的授權是 用戶名+主機名
niunan@192.168.128.1
GRANT ALL ON samp_db.* TO ardis@192.168.128.% IDENTIFIEDBY “snow”
GRANT ALL ON *.* TO ‘niunan@’localhost’ identified by ‘密碼’
如果還有問題,可以繼續追問,感謝。
mysql如何刪除HostName賬號和localhost賬號
語法: Delete from user where user = “user_name” and host = “host_name” ;
例子:delete from user where user=’sss’ and host=’localhost’;
或者: 取消一個賬戶和其權限
Drop USER user;
drop user username@’%’
drop user username@localhost
怎麼解決mysql不允許遠程連接的錯誤
添加個支持遠程連接的賬戶,和給予這個賬戶讀取數據庫的權限。
mysql的賬戶,包括兩部分,名稱和主機名,如下例:
root@localhost
解釋:
這個賬戶名為root,主機名為localhost(就是本機),這個賬戶之能在本機登錄mysql.
如果你要遠程用這個賬戶名登錄,需要新建一個賬戶,見如下:
root@%
root是賬戶名,%是主機名,%的意思是匹配任何地址,也就是允許你從任何主機連接mysql.
另外是權限的了。
比如你有個 ceshi 這個數據庫。
你需要把ceshi這個數據庫的權限給予root@%這個賬戶。
給予權限參考命令:
grant all on ceshi.* to ‘root’@’%’
做到這兩點。你就可以遠程連接mysql了。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/293489.html