回答:
これはMySQLではデフォルトで許可されています。
デフォルトで無効になっているのはリモートroot
アクセスです。これを有効にする場合は、次のSQLコマンドをローカルで実行します。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
次に、次の行を見つけて、ファイル内でコメント化します。my.cnf
ファイルは通常/etc/mysql/my.cnf
、Unix / OSXシステムにあります。場合によっては、ファイルの場所は/etc/mysql/mysql.conf.d/mysqld.cnfです。
それがWindowsシステムの場合、MySQLインストールディレクトリで見つけることができます。通常は次のようにC:\Program Files\MySQL\MySQL Server 5.5\
なり、ファイル名はになりますmy.ini
。
行を変更
bind-address = 127.0.0.1
に
#bind-address = 127.0.0.1
また、MySQLサーバー(Unix / OSX、およびWindows)を再起動して、変更を有効にします。
my.cnf
ファイルを探していて、bind-address
その中にディレクティブが見つからない場合は、私の場合(Ubuntu 16.04.2のMySQLバージョン14.14)、ファイルの場所は/etc/mysql/mysql.conf.d/mysqld.cnf
上記のすべてを行った後も、root
リモートとしてログインできませんでしたが、ポートにTelnet 接続3306
するMySQL
と、接続が受け入れられていることが確認されました。
MySQLでユーザーを調べ始めたところ、異なるパスワードを持つ複数のrootユーザーがいることに気付きました。
select user, host, password from mysql.user;
だから、中にMySQL
私は根のすべてのパスワードを設定して、再び、私は最終的に、遠隔でログインすることができroot
。
use mysql;
update user set password=PASSWORD('NEWPASSWORD') where User='root';
flush privileges;
update user set authentication_string=password('YOUR_PASSWORD') where user='root';
私の経験からのメモとして、このパスの下に構成ファイルがあります/etc/mysql/mysql.conf.d/mysqld.cnf
。
(私はしばらくの間この道を見つけるのに苦労しました)
sudo find /etc -iname 'mysql*.cnf'
私の場合、私はセントOS上のリモートmysqlサーバーに接続しようとしていました。多くの解決策(すべての特権の付与、IPバインディングの削除、ネットワークの有効化)を行った後も、問題は解決されませんでした。
結局のところ、さまざまな解決策を検討しているときに、iptablesに出くわしました。その結果、mysqlポート3306が接続を受け入れていないことに気付きました。
ここでは、この問題を確認して解決した方法について簡単に説明します。
telnet(mysql server ip)[portNo]
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
サービスiptables停止
お役に立てれば。
MySQLユーザーにワイルドカードリモートアクセスを設定するには、以下の手順に従ってください。
(1)cmdを開きます。
(2)パスC:\ Program Files \ MySQL \ MySQL Server 5.X \ binに移動して、このコマンドを実行します。
mysql -u root -p
(3)rootパスワードを入力します。
(4)以下のコマンドを実行して権限を付与します。
*。*のすべての特権を「パスワード」で識別される「ユーザー名」@「IP」に付与します。
USERNAME:MySQLサーバーに接続するユーザー名。
IP:MySQLサーバーへのアクセスを許可する場所からのパブリックIPアドレス。
PASSWORD:使用されるユーザー名のパスワード。
IPを%に置き換えて、ユーザーが任意のIPアドレスから接続できるようにすることができます。
(5)コマンドを実行して権限をフラッシュし、終了します。
FLUSH PRIVILEGES;
出口; または\ q
MySQLサーバープロセスが127.0.0.1または:: 1のみをリッスンしている場合は、リモートで接続できません。これにbind-address
設定がある場合/etc/my.cnf
は、問題の原因である可能性があります。
非localhost
ユーザーの権限も追加する必要があります。
127.0.0.1
でしょうか
MySQLをインストールした場合brew
、デフォルトではローカルインターフェースのみをリッスンします。これを修正するには/usr/local/etc/my.cnf
、bind-address
from 127.0.0.1
を編集して変更する必要があります*
。
次にを実行しbrew services restart mysql
ます。
リモートログインのすべてのプロセス。リモートログインはデフォルトでオフになっています。すべてのIPに対して手動で開く必要があります。すべてのIPにアクセスを許可するには
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
特定のIP
GRANT ALL PRIVILEGES ON *.* TO 'root'@'your_desire_ip' IDENTIFIED BY 'password';
その後
flush privileges;
ユーザーホストとパスワードを確認できます
SELECT host,user,authentication_string FROM mysql.user;
今あなたの義務はこれを変えることです
bind-address = 127.0.0.1
あなたはこれを見つけることができます
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
これが見つからない場合は、これを試してください
sudo nano /etc/mysql/my.cnf
これにコメント
#bind-address = 127.0.0.1
次にMysqlを再起動します
sudo service mysql restart
リモートログインをお楽しみください
ちなみに、私は何時間もこの問題で髪を引っ張りました。最後にホスティングプロバイダーに電話をかけました。私の場合、コントロールパネルで1and1のクラウドサーバーを使用していて、ポートを複製して追加する必要があるセカンダリファイアウォールがあることがわかりました。 3306.一度追加すると、すぐに..
このブログローカルエリアネットワークでMySQLサーバーをセットアップする方法はMySQL
、ゼロからのセットアップに役立ちます。
そして、OS Xの人々にとって、bind-addressパラメータは通常、my.iniファイルではなくlaunchd plistに設定されることに注意してください。したがって、私の場合、から削除<string>--bind-address=127.0.0.1</string>
しました/Library/LaunchDaemons/homebrew.mxcl.mariadb.plist
。
~/Library/LaunchAgents
リモートrootアクセスを有効にすると危険な場合があります。より制限されたアクセス許可を持つユーザーアカウントをセットアップする場合は、望ましいでしょう。次の3つの手順でそれを行う必要があります。
で始まる行がbind-address ...
my.iniまたはmy.cnfファイルで少なくともコメント化されていることを確認してください。存在しない場合は次に進みます。このファイルはC:\ProgramData\MySQL\MySQL Server 8.0
Windowsにあります。
その後、接続の確立に使用しているユーザーアカウントが[ localhost
ホストマッチングの制限]フィールドにないことを確認します。推奨されませんが、代わりに%
テスト目的でそのフィールドに入力できます。これを行うには、MySQL Workbenchを使用してサーバーへのローカル接続を開き、メニューバーから[サーバー]> [ユーザーと権限]に移動して、接続するユーザーアカウントを見つけます。
「ホストの一致に制限」フィールドは、ローカル以外の場所への接続を許可しないものです。つまり、受け入れられる接続をIPアドレスのパターンに制限します。理想的には、静的IPアドレスまたはサブネットからMySQLサーバーにアクセスして、できる限り制限を加える必要があります。