IT忍者神龜之mysql遠端連線:ERROR 1130 (HY000): Host '*.*.*.*' is not allowed to connect to this MySQL server解決,mysqlconnect

來源:互聯網
上載者:User

IT忍者神龜之mysql遠端連線:ERROR 1130 (HY000): Host '*.*.*.*' is not allowed to connect to this MySQL server解決,mysqlconnect

安裝完MySQL後,遠端連線資料庫的時候,出現 ERROR 1130 (HY000): Host '192.168.0.1' is not allowed to connect to this MySQL server提示資訊,不能遠端連線資料庫。考慮可能是因為系統資料庫mysql中user表中的host是localhost的原因,於是,我嘗試把這個值改為自己伺服器的ip,果然就好用了,不過用 mysql -u root -p命令就連不上資料庫了,需要用mysql -h 伺服器ip -u root -p因為預設的串連mysql資料庫user表中host的值,而這個命令的預設host是localhost,就連不上了。

具體操作方法:

用localhost串連上mysql後,
use mysql;
update user set host='123.456.789.254';(IP為你想要遠端連線資料庫的本地機器的IP)
\q;

退出mysql,然後重新啟動mysql就可以了。

其他解決方案

2. 改表法。可能是你的帳號不允許從遠程登陸,只能在localhost。這個時候只要在localhost的那台電腦,登入mysql後,更改 "mysql" 資料庫裡的 "user" 表裡的 "host" 項,從"localhost"改稱"%"
mysql -u root -pvmware
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>flush privileges;
mysql>select host, user from user;

3. 授權法。例如,你想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.0.1' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;


***********************************************************************
phpMyAdmin說是使用者名稱密碼的問題,這就奇怪了,root使用者名稱密碼肯定沒有問題,而且通過命令列串連沒有問題。又仔細查看設定檔,還是沒有問題。於是去搜了一下,找到這個解決方案.

先用root登入MYSQL伺服器,執行
mysql>set  password  for  你要用的使用者名稱@"localhost"=old_password('這個使用者的密碼');

原因是因為你使用的mysql伺服器版本中使用了新的密碼驗證機制,這需要用戶端的版本要在4.0以上,原來的密碼函數被改為old_password();,這樣使用password()產生的密碼在舊的版本上就可以解決這個問題了.


mysql錯誤1130,具體描述如下ERROR 1130 Host 'localhost' is not allowed to connect to this MySQL

windows還是linux?
錯誤碼 1045Access denied for user 'root'@'localhost' (using password:YES)

解決辦法是重新設定root使用者密碼,在Windows平台下操作步驟如下:

1、以系統管理員身份登入到系統;

2、如果MySQL伺服器正在運行,停止它。

如果是作為Windows服務啟動並執行伺服器,進入服務管理員:開始菜單->控制台->管理工具->服務

如果伺服器不是作為服務而啟動並執行,可能需要使用工作管理員來強制停止它。

3、建立1個文字檔,並將下述命令置於單一行中:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');

用任意名稱儲存該檔案。在本例中,該檔案為C:\mysql-init.txt。

4、進入DOS命令提示:開始菜單->運行-> cmd

假定你已將MySQL安裝到C:\mysql。如果你將MySQL安裝到了另一位置,請對下述命令進行相應的調整。

在DOS命令提示字元下,執行命令:

C:\> C:\mysql\bin\mysqld-nt --init-file=C:\mysql-init.txt

在伺服器啟動時,執行由“--init-file”選項(作用:在啟動時從指定的檔案中讀取SQL命令)命名的檔案的內容,更改根使用者密碼。當伺服器成功啟動後,應刪除C:\mysql-init.txt。

5、停止MySQL伺服器,然後在正常模式下重啟它。如果以服務方式運行伺服器,應從Windows服務視窗啟動它。如果以手動方式啟動了伺服器,能夠像正常情形下一樣使用命令。

附:

其他方法

方法一: # /etc/init.d/mysql stop # mysqld_safe --user=mysql --skip-grant-tables --skip-networking & # mysql -u root mysql mysql> UPDATE user SET Password=PASSWORD(’newpassword’) where USER=’root’; mysql> FLUSH PRIVILEGES; mysql> quit # /etc/init.d/mysql restart # mysql -uroot -p Enter password: <輸入新設的密碼newpassword> mysql> 方法二: 直接使用/etc/mysql/debian.cnf檔案中[client]節提供的使用者名稱和密碼: # mysql -udebian-sys-maint -p Enter password: <輸入[client]節的密碼> mysql> UPDATE user SET Password=PASSWORD(’newpassword’) where USER=’root’; mysql> FLUSH PRIVIL......餘下全文>>
 
就是mysql不可以串連上的問題

在 資料庫 "information_schema "中有幾張以 "_PRIVILEGES "結尾的表,它們是系統管理權限的(包括登陸host,具體是哪張不清楚了)。
比如:USER_PRIVILEGES表:
| 'root'@'localhost' | NULL | SELECT | YES |
第一列表root使用者在localhost下。你看一下這個表,如果表中沒有@'localhost'就表示你不能以localhost登陸。
具體再參考下其它的吧
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.