2011-03-02 103 views
0

我試圖訪問mysql到遠程服務器,並在那裏創建一個數據庫。 我正在使用膩子來連接。問題是,我得到的「拒絕訪問」錯誤 我無論做什麼:mysql訪問被拒絕,ssh數據庫主機

:mysql -p 
:mysql -u <username> -p 
. 
. 
. 

我仍然得到警告。

ERROR 1045(28000):拒絕訪問用戶 '用戶名' @ 'localhost' 的(使用密碼:NO)

ERROR 1045(28000):拒絕訪問用戶 '用戶名' @ 'localhost' 的(使用密碼:是)

每個場合一次,當我不輸入密碼,當我這樣做。

回答

1

您在遠程訪問MySql時遇到問題。從here

  • 第1步:登錄通過SSH

首先,登錄通過SSH遠程MySQL數據庫服務器

  • 第2步:啓用網絡

一旦連接你需要使用vi等文本編輯器編輯mysql配置文件my.cfg。

在Debian的Linux文件位於/etc/mysql/my.cnf

# vi /etc/my.cnf 
  • 第3步:一旦文件打開,找到讀作[mysqld的]線

確保條跳躍聯網是評論(或刪除線)並添加以下行

bind-address=YOUR-SERVER-IP 

對於e xample,如果你的MySQL服務器的IP是172.20.5.2,然後整個塊應該像下面這樣:

[mysqld] 
user = mysql 
pid-file = /var/run/mysqld/mysqld.pid 
socket = /var/run/mysqld/mysqld.sock 
port = 3306 
basedir = /usr 
datadir = /var/lib/mysql 
tmpdir = /tmp 
language = /usr/share/mysql/English 
bind-address = 172.20.5.2 

# skip-networking 
.... 
.. 
.... 

凡 - 綁定地址:IP地址綁定到。 - 跳過網絡:根本不要偵聽TCP/IP連接。所有與mysqld的交互都必須通過Unix套接字進行。強烈建議僅允許本地請求的系統使用此選項。由於您需要允許遠程連接,因此應將此行從文件中刪除或將其置於註釋狀態。

  • 步驟#4保存並關閉文件。

重新啓動mysql服務採取改變生效

# /etc/init.d/mysql restart 
  • 步驟#遠程IP地址5授予訪問

    #的mysql -u根 - P的MySQL

授予訪問權限新的數據庫

如果你想添加一個名爲foo的用戶欄和遠程IP 162.54.10.20,那麼你需要在mysql的輸入下面的命令>提示符下新的數據庫:

mysql> CREATE DATABASE foo; 

mysql> GRANT ALL ON foo.* TO [email protected]'162.54.10.20' IDENTIFIED BY 'PASSWORD'; 

授予訪問現有數據庫

讓我們假設你總是通過名爲162.54.10.20的遠程IP爲用戶webadmin的名爲webdb的數據庫建立連接,那麼你需要授予對此IP地址的訪問權限。在MySQL的>提示類型以下對現有數據庫的命令:

mysql> update db set Host='162.54.10.20' where Db='webdb'; 

mysql> update user set Host='162.54.10.20' where user='webadmin'; 
  • 步驟#6:的MySQL
  • 的註銷

鍵入退出命令登出的MySQL

mysql> exit 
  • 步驟# 7:測試它

從遠程系統類型命令

$ mysql -u webadmin –h 172.20.5.2 –p 

您還可以使用telnet連接到端口3306進行測試的目的

$ telnet 172.20.5.2 3306 
+1

在步驟5,我得到'「根」 @'localhost''再次否認。/etc/hostname = localhost。我錯過了什麼嗎? – 2013-04-10 17:54:42