本文目錄一覽:
如何打開MySQL中root賬戶的遠程登錄
1、登錄到MySQL中,為root進行遠程訪問的授權,執行下面的命令:
mysql GRANT ALL PRIVILEGES ON *.* TO root@”%” IDENTIFIED BY “root”;
mysql flush privileges;
第一句中”%”表示任何主機都可以遠程登錄到該服務器上訪問。如果要限制只有某台機器可以訪問,將其換成相應的IP即可,如:
GRANT ALL PRIVILEGES ON *.* TO root@”172.168.193.25″ IDENTIFIED BY “root”;
第二句表示從mysql數據庫的grant表中重新加載權限數據。因為MySQL把權限都放在了cache中,所以在做完更改後需要重新加載。
或限制或個IP訪問:
GRANT ALL ON samp_db.* TO boris@192.168.128.3 IDENTIFIED BY “ruby”
GRANT ALL ON samp_db.* TO fred@192.168.128.% IDENTIFIED BY “quartz”
GRANT ALL ON samp_db.* TO rex@192.168.128.0/17 IDENTIFIED BY “ruby”
第一個例子指出用戶能從其連接的特定主機,第二個指定對於C類子網192.168.128的IP模式,而第三條語句中,192.168.128.0/17指定一個17位網絡號並匹配具有192.168.128頭17位的IP地址
2、修改/etc/mysql/my.cnf,需要root用戶權限。找到文件中的:
[ruby] view plaincopy
bind-address = 127.0.0.1
將其注釋掉,保存。
3、重新啟動MySQL服務器。執行下面的幾條命令即可:
# /usr/bin/mysqladmin -u root -p shutdown
# /usr/bin/mysqld_safe
如果mysqladmin和mysql_safe不在/usr/bin目錄中,可以通過whereis命令查找,例如:
# whereis mysqladmin
mysqladmin: /usr/bin/mysqladmin /usr/share/man/man1/mysqladmin.1.gz
執行完上面的三步後,就可以通過遠程機器連接了數據庫了。
Mysql無法遠程連接,要如何解決
原因是MySQL默認不支持遠程連接,(那麼phpMyAdmin為什麼可以連接呢?那是因為phpMyadmin的環境是上傳到服務器的,其本身訪問數據庫是相當於本機localhost訪問的),如果想遠程訪問,可以使用下面的方法來解決。
遠程連接mysql數據庫時出現如下提示信息:“MYSQL CONNECT ERROR – 1130:Host ’202.43.**.**’ is not allowed to connect to this MySQL server”
在創建mysql賬戶時,限制連接賬戶遠程登錄。也就是說,除了當前mysql所在的安裝服務器外,其他的ip(主機)都是不允許訪問的,即使你的用戶名和密碼是正確的。這時候就要修改用戶的訪問權限。
首先是用root用戶登錄到mysql的安裝主機,然後進入mysql:
mysql -u root -p
root是mysql的最高授權用戶名,這時會提示你輸入密碼,正確輸入密碼後回車,進入mysql。回車
然後輸入如下命令:
grant all on 數據庫名.* to ‘數據庫賬戶名’@’%’ identified by ‘密碼’ with grant option;
回車
flush privileges;
回車
注意:上面的單引號不能省,數據庫名.* 表示要開放的數據庫下所有表,如果該連接的所有數據庫都要開放,可以用 *.* 代替。
‘數據庫賬戶名’@’%’ 這裡表示要開放的賬戶,百分號表示在任何主機都允許訪問。
如果以上兩步均顯示 “Query OK, 0 rows affected (0.00 sec)”,那麼說明命令已經成功執行,現在就可以遠程連接你的mysql數據庫了。
(1).如果想賦予所有操作的權限
grant all on … to 用戶名……
(2).如果想賦予操作所有數據庫的所有表的權限
grant … on *.* to 用戶名……
(3).如果想賦予某個數據庫的所有表
grant … on 數據庫名稱.’*’ to 用戶名…… ([ * ]兩邊一定要加單引號)
(4).如果想賦予某個數據庫的某張表
grant … on 數據庫名稱.表名 to 用戶名……
(5).如果想任何客戶端都能通過該用戶名遠程訪問
grant … on … to 用戶名@% ……. (要把IP地址改成[ % ])
(6).改完了以後一定要重新啟動MySQL服務
用戶會存到Mysql服務器上的user表中,所以下面的兩種方法都可以解決這個問題:
1。 改表法。可能是你的帳號不允許從遠程登陸,只能在localhost。這個時候只要在localhost的那台電腦,登入mysql後,更改 “mysql” 數據庫里的 “user” 表裡的 “host” 項,從”localhost”改稱”%”
mysql -u root -p
mysqluse mysql;
mysqlupdate user set host = ’%’ where user = ’root’;mysqlselect host, user from user;
mysqlflush privileges;
2. 授權法。例如,你想myuser使用mypassword從任何主機連接到mysql服務器的話。
GRANT ALL PRIVILEGES ON *.* TO ’myuser’@’%’ IDENTIFIED BY ’mypassword’ WITH GRANT OPTION;
如果你想允許用戶myuser從ip為192.168.1.3的主機連接到mysql服務器,並使用mypassword作為密碼
GRANT ALL PRIVILEGES ON *.* TO ’myuser’@’192.168.1.3’ IDENTIFIED BY ’mypassword’ WITH GRANT OPTION;
如果還是無法遠程我們可參考
1、Mysql的端口是否正確,通過netstat -ntlp查看端口佔用情況,一般情況下端口是3306。在用工具連接MySQl是要用到端口。例如My AdminMy Query BrowserMySQl Front等。
2、檢查用戶權限是否正確。
例如:用戶Tester,user表裡有兩條記錄:host分別為localhost和%(為了安全,%可以換成你需要外部連接的IP)。
3、查看/etc/my.cnf中,skip-networking 是否已被注掉,需要注掉。
報錯:ERROR 2003 (HY000): Can’t connect to MySQL server on ‘192.168.51.112’ (111)
4、查看iptables是否停掉,沒關的情況下,無法連接。
通過:service iptables stop臨時關閉。
報錯:ERROR 2003 (HY000): Can’t connect to MySQL server on ‘192.168.51.112’ (113)
另外,我們還可以通過配置http通道來使Navicat遠程連接到數據庫,這樣做的好處是不需要前面繁雜的配置。在主機名IP地址那裡填寫LocalHost
用戶名與密碼一欄則填寫你所在的數據庫用戶名與密碼。
這時候還不能連接數據庫的,需要通過Http通道的形式進行數據庫連接。
點擊連接屬性標籤欄中的Http,如下圖所示:
勾選使用Http通道後,在通道地址一欄輸入你的網址與後台文件地址。
mysql中用戶權限的%什麼意思?
“%”字符起通配符作用,與LIKE模式匹配的含義相同。在上述語句中,它意味着“任何主機”,所以user和user@%等價。這是建立用戶最簡單的方法,但也是最不安全的。
怎麼遠程連接別人mysql數據庫
第一中方法:比較詳細
以下的文章主要介紹的是MySQL 數據庫開啟遠程連接的時機操作流程,其實開啟MySQL 數據庫遠程連接的實際操作步驟並不難,知識方法對錯而已,今天我們要向大家描述的是MySQL 數據庫開啟遠程連接的時機操作流程。
1、d:\MySQL\bin\MySQL -h localhost -u root
這樣應該可以進入MySQL服務器
複製代碼 代碼如下:
MySQLupdate user set host = ‘%’ where user = ‘root’;
MySQLselect host, user from user;
2、MySQLGRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION
予任何主機訪問數據的權限
3、MySQLFLUSH PRIVILEGES
修改生效
4、MySQLEXIT
退出MySQL服務器
這樣就可以在其它任何的主機上以root身份登錄啦!
以上的相關內容就是對MySQL 數據庫開啟遠程連接的介紹,望你能有所收穫。
第二種方法:
1、在控制台執行 mysql -u root -p mysql,系統提示輸入數據庫root用戶的密碼,輸入完成後即進入mysql控制台,這個命令的第一個mysql是執行命令,第二個mysql是系統數據名稱,不一樣的。
2、在mysql控制台執行 GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’ IDENTIFIED BY ‘MyPassword’ WITH GRANT OPTION;
3、在mysql控制台執行命令中的 ‘root’@’%’ 可以這樣理解: root是用戶名,%是主機名或IP地址,這裡的%代表任意主機或IP地址,你也可替換成任意其它用戶名或指定唯一的IP地址;’MyPassword’是給授權用戶指定的登錄數據庫的密碼;另外需要說明一點的是我這裡的都是授權所有權限,可以指定部分權限,GRANT具體操作詳情見:
4、不放心的話可以在mysql控制台執行 select host, user from user; 檢查一下用戶表裡的內容
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/154576.html