MySQLデータベースでSHOW GRANTS
を実行すると、
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost'
IDENTIFIED BY PASSWORD 'some_characters'
WITH GRANT OPTION
私が間違っていなければ、root@localhost
は、ユーザーroot
がlocalhost
からのみサーバーにアクセスできることを意味します。同じネットワーク内の他のすべてのマシンからこのmysqlサーバーにアクセスするためのアクセス許可をroot
に付与するようにMySQLにどのように指示しますか。
これは*.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;
試してください:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Pa55w0rd' WITH GRANT OPTION;
最初にmysql、次にrootユーザーが外部からアクセス可能であることを確認するためにいくつかの手順を実行する必要があります。
skip-networking
でmy.cnf
を無効にする(すなわち、/etc/mysql/my.cnf
)
bind-address
のmy.cnf
の値を確認します。もしそれが127.0.0.1
に設定されていれば、それを0.0.0.0
に変更して、すべてのIPからのアクセス、または接続したいIPへのアクセスを許可できます。
任意のIPからrootユーザーにリモートアクセスを許可します(または%
の代わりに自分のIPを指定します)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'
IDENTIFIED BY 'your_root_password'
WITH GRANT OPTION;
FLUSH PRIVILEGES;`
MySQLサービスを再起動します。
Sudo service mysql restart
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'
IDENTIFIED BY 'YOUR_PASS'
WITH GRANT OPTION;
FLUSH PRIVILEGES;
*.* = DB.TABLE
あなたはユーザーを特定のデータベースと特定のテーブルに制限することができます。
'root'@'%'
あなたはあなたが作成したどのユーザでもrootを変更することができ、%はすべてのIPを許可することです。あなたは%。168.1.1などを変更することによってそれを制限することができます。
これらのSQLは、他の人が共有していることに作業を許可します。それでもデータベースにアクセスできない場合は、ポートにファイアウォールの制限があるだけの可能性があります。接続を開く方法は、サーバーの種類(およびその間にあるルーター)によって異なります。 TCPポート3306インバウンドを開き、外部マシン(all/subnet/single IPなど)に対しても同様のアクセス規則を与えます。
私の場合、私はセント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停止
お役に立てれば。
2つのステップ
ワイルドカードを使用してユーザーをセットアップします。create user 'root'@'%' identified by 'some_characters'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD 'some_characters' WITH GRANT OPTION
vim /etc/my.cnf
以下を追加してください。bind-address=0.0.0.0
サーバーを再起動しても、問題なく接続できます。
/etc/mysql/mysql.conf.d/mysqld.cnf
ファイルを開き、次の行をコメントアウトします。
#bind-address = 127.0.0.1
これは私のために働きました。しかし私が最初にそれが影響しなかったそれらを試みたという奇妙な問題がありました。 phpmyadminページを更新して、どうにかして動かしました。
Local-xampp-mysqlにアクセスする必要がある場合xampp-Shell - > openコマンドプロンプトに移動できます。
それからmysql -uroot -p --port = 3306またはmysql -uroot -p(パスワードが設定されている場合)。その後、mysqlシェルページからこれらのアクセスを許可することができます(localhost/phpmyadminからも機能できます)。
誰かがこのトピックを見つけて初心者の問題を抱えている場合は、これらを追加するだけです。