web-dev-qa-db-ja.com

mysqlサーバーへのリモートアクセス許可をユーザーに付与するにはどうすればいいですか?

MySQLデータベースでSHOW GRANTSを実行すると、

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' 
    IDENTIFIED BY PASSWORD 'some_characters' 
    WITH GRANT OPTION

私が間違っていなければ、root@localhostは、ユーザーrootlocalhostからのみサーバーにアクセスできることを意味します。同じネットワーク内の他のすべてのマシンからこのmysqlサーバーにアクセスするためのアクセス許可をrootに付与するようにMySQLにどのように指示しますか。

112
Aufwind

これは*.example.com内のどのマシンからも同じパスワードでrootアクセスを許可します。

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%.example.com' 
    IDENTIFIED BY 'some_characters' 
    WITH GRANT OPTION;
FLUSH PRIVILEGES;

名前解決が機能しない場合は、IPまたはサブネットによるアクセスを許可することもできます。

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.%'
    IDENTIFIED BY 'some_characters'  
    WITH GRANT OPTION;
FLUSH PRIVILEGES;

MySQL GRANT構文のドキュメント

140

試してください:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Pa55w0rd' WITH GRANT OPTION;
89
moshe beeri

最初にmysql、次にrootユーザーが外部からアクセス可能であることを確認するためにいくつかの手順を実行する必要があります。

  1. skip-networkingmy.cnfを無効にする(すなわち、/etc/mysql/my.cnf

  2. bind-addressmy.cnfの値を確認します。もしそれが127.0.0.1に設定されていれば、それを0.0.0.0に変更して、すべてのIPからのアクセス、または接続したいIPへのアクセスを許可できます。

  3. 任意のIPからrootユーザーにリモートアクセスを許可します(または%の代わりに自分のIPを指定します)

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'
        IDENTIFIED BY 'your_root_password'
        WITH GRANT OPTION;
    FLUSH PRIVILEGES;`
    
  4. MySQLサービスを再起動します。

    Sudo service mysql restart
    
43
Khashayar
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' 
    IDENTIFIED BY 'YOUR_PASS' 
    WITH GRANT OPTION;
FLUSH PRIVILEGES;  

*.* = DB.TABLEあなたはユーザーを特定のデータベースと特定のテーブルに制限することができます。

'root'@'%'あなたはあなたが作成したどのユーザでもrootを変更することができ、%はすべてのIPを許可することです。あなたは%。168.1.1などを変更することによってそれを制限することができます。

32
Wasim A.

これらのSQLは、他の人が共有していることに作業を許可します。それでもデータベースにアクセスできない場合は、ポートにファイアウォールの制限があるだけの可能性があります。接続を開く方法は、サーバーの種類(およびその間にあるルーター)によって異なります。 TCPポート3306インバウンドを開き、外部マシン(all/subnet/single IPなど)に対しても同様のアクセス規則を与えます。

8
user171212

私の場合、私はセントOS上のリモートMySQLサーバーに接続しようとしていました。多くの解決策(すべての特権の付与、ipバインディングの削除、ネットワーキングの有効化)を経ても、問題は解決しませんでした。

結局、さまざまな解決策を調べていると、iptablesに出くわしたので、MySQLポート3306が接続を受け入れていないことに気付きました。

これが私がこの問題をどのように確認し解決したかについての小さなメモです。

  • ポートが接続を受け入れているかどうかを確認します。
telnet(MySQLサーバのIP)[portNo]

- ポートでの接続を許可するためのipテーブルルールの追加:

iptables -A入力-i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT

本番環境ではこれを推奨しませんが、iptablesが正しく構成されていない場合は、ルールを追加しても問題が解決しない場合があります。その場合は以下のようにしてください。

サービスiptables停止

お役に立てれば。

3
Kushal

2つのステップ

  1. ワイルドカードを使用してユーザーをセットアップします。
    create user 'root'@'%' identified by 'some_characters'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD 'some_characters' WITH GRANT OPTION

  2. vim /etc/my.cnf
    以下を追加してください。
    bind-address=0.0.0.0

サーバーを再起動しても、問題なく接続できます。

2
studio1057

/etc/mysql/mysql.conf.d/mysqld.cnfファイルを開き、次の行をコメントアウトします。

#bind-address = 127.0.0.1
2
Vik2696

これは私のために働きました。しかし私が最初にそれが影響しなかったそれらを試みたという奇妙な問題がありました。 phpmyadminページを更新して、どうにかして動かしました。

Local-xampp-mysqlにアクセスする必要がある場合xampp-Shell - > openコマンドプロンプトに移動できます。

それからmysql -uroot -p --port = 3306またはmysql -uroot -p(パスワードが設定されている場合)。その後、mysqlシェルページからこれらのアクセスを許可することができます(localhost/phpmyadminからも機能できます)。

誰かがこのトピックを見つけて初心者の問題を抱えている場合は、これらを追加するだけです。

0
icemanzzz