2016-10-14 9 views
0

を使用してMySQLを接続しようとしていますが、 'root' @ 'IP_Address'を使用してMySQLに接続できません。 私は浮浪者のsshで[email protected]を使用してMySQLにアクセスすることができますが、私はIPがベイグラントVMのために使用されている[email protected]を使用して接続する場合、私はaccess deniedエラーを取得しています。バグで

これは私のベイグラントファイルの設定です:

# Create a forwarded port mapping which allows access to a specific port 
    # within the machine from a port on the host machine. In the example below, 
    # accessing "localhost:8080" will access port 80 on the guest machine. 

    config.vm.network "forwarded_port", guest: 80, host: 8080 
    config.vm.network "forwarded_port", guest: 3306, host: 3306 

    # Create a private network, which allows host-only access to the machine 
    # using a specific IP. 

    config.vm.network "private_network", ip: "192.168.33.10" 

[email protected]がすでにMySQLで追加され、許可が

mysql> select User,Host from mysql.user; 
+-----------+---------------+ 
| User  | Host   | 
+-----------+---------------+ 
| root  | 192.168.33.10 | 
| mysql.sys | localhost  | 
| root  | localhost  | 
+-----------+---------------+ 
3 rows in set (0.00 sec) 

のMySQL 5.7 mysqld.cnfを与えられています

I have tried bind-address to '0.0.0.0' and bind-address '192.168.33.10'. 

はまだエラーメッセージが表示さ:

[email protected]:/etc/mysql/mysql.conf.d$ mysql -u [email protected] -p 
Enter password: 
ERROR 1045 (28000): Access denied for user '[email protected]'@'localhost' (using password: YES) 
+0

SQL接続でパスワードが必要ないときにパスワードを設定すると思います –

+0

私は流行の人にはあまり知識がありませんが、VM内やホストや別のコンピュータからmysqlにアクセスしようとしていますか?私はローカルで推測していますので、別のユーザーを作成してrootの代わりに接続してみてください。このIPへのアクセスを許可する '' GRANT ALL PRIVILEGES ON *。* TO 'root'@'192.168.33.10' 'P4 $ $ WORD 'WITH GRANT OPTION; –

答えて

2

はエラーメッセージを注意深く見ています。

'[email protected]' 

とMySQLはからの接続を見ているホストがある:ここで

'localhost' 

MySQLクライアントは、これらのオプションを解釈する方法のエラー・メッセージは、MySQLサーバに供給されたユーザ名があることを示しています:

mysql -u [email protected] -p 

-u userは、この場合には、それがユーザ名値として'[email protected]'見ています、文字列値を提供します。 @記号と数字とドットは、ユーザー名文字列の一部にすぎません。それらの文字には特別な意味はありません。単なる文字列です。そして、MySQLサーバはUser値をその文字列と一致するmysql.usersテーブルの行を探します。 (

一致を検索するには、MySQLはまたHost列の値を見て起こっている。それは、接続がから来ると見られているホストと一致しているつもりです。何という手段が'root'@'localhost'であることは違うです'root'@'192.168.33.10'よりユーザー。パスワードの入力を省略

が使用するプロトコルのための任意のコマンドオプションです

-pプロンプト、にポート番号を接続するホスト、我々はのいずれかを供給しないなど、MySQLのデフォルトつまり、

-h localhost 

これは、指定したとおりです。我々はTCP/IPプロトコルを介してMySQLサーバに接続して、Unixソケットを使用しないようにしたい場合は


は、我々は-h hostnameまたは-h ipaddressを指定するか、または--protocol=TCP

ホスト名 "localhostを指定する必要があります。 MySQLで特別な意味を持っている。それは我々が期待するかもしれない、ループバックIPアドレスを介してUnixソケットを介した接続、です。例えば


、ローカルMACHIN上のMySQLサーバに接続しますe、ループバックIPアドレスを使用してデフォルトポート3306でリスンする:

mysql -h 127.0.0.1 -u root -p 

この情報のほとんどは、MySQLリファレンスマニュアルで詳しく説明しています。

http://dev.mysql.com/doc/refman/5.7/en/connecting.html

また、デフォルトでは、MySQLはIPアドレスをホスト名に解決するようにDNS逆引き参照を使用しています。

mysql.usersテーブルのHostカラムにIPアドレスを使用する場合は、逆DNSルックアップを無効にする必要があります。私たちは、このオプションを含めることでそれを行う:my.cnf設定ファイルで

skip_name_resolve 

1

右コマンドを

mysql -u root -h 192.168.33.10 -p