mysql-serverのインストール時にrootパスワードを入力する必要がないのはなぜですか?

mysql-serverのインストール時にrootパスワードを入力する必要がないのはなぜですか?

最近、ルートパスワードを変更しようとしたときに忘れた問題が発生しました。ところで何とかmysqlサービス自体を完全に壊すことができたようです。そして、他の多くのサービスでもサーバーへの接続に問題があったからです。愚かなことが起こる前に完全に再インストールするのが最善だと決めました。使用中のすべてのコンポーネントを削除するには、apt-get purge mysql*コマンドを実行してもmysqlは影響を受けないようです。何度も試して再起動した後、ついにmysqlをクリアしたようなときにインストールしようとしましたが、設定が表示されず、mysqlコマンドを使用したときに試みたときに尋ねられませんでした。ユーザーがrootパスワードを変更しようとしても大丈夫だと言いますが、パスワードは機能しません。私は非常に混乱し、欲求不満を感じました。これが最初に起こったわけではなく、mysqlを再インストールすることは実際に私にとって最大の悪夢です。私を助けてください。私は私が何をすべきか全く知りません。

編集:実際にはパスワードを設定する必要がありましたが...どのパスワードでもログインでき、mysql_secure_installationを使用した後もリモート接続は実際には機能しませんでした。私は実際のfで何が起こったのかわかりませんが、mysqlのインストールが完全に壊れています。

ベストアンサー1

設定中に誤って「匿名ユーザー」を追加した可能性があります。 mysqlデータベースからユーザーを削除する必要があります。

>delete from mysql.user where User='';

次に、すべてのホストで使用できる新しい「root」ユーザーを作成します。 >create user 'root'@'%' identified by 'your_new_password_here';

次に、自分にすべての権限を与えます。

>grant all on *.* to 'root'@'%'; flush privileges;

(私の記憶が正しい場合、許可はサーバー上で行われ、リモートクライアントは許可されません。)

これにより、ルートとパスワードのみが有効になります。 secure_installationオプションは以前私を混乱させました。とにかく理解するためには、マニュアルがより良いです。

接続の問題については、バインドアドレスを変更する必要があるかもしれません。 mysql / mariadbにはbind_address=127.0.0.1.デフォルトでlocalhostのデフォルト値があります。だからその機械だけあるのです。別のコンピュータを許可するには、サーバーで次のように変更します。bind_address=0.0.0.0

mysqlで現在のバインディングアドレスを確認できます。新しいルートとパスワードを使用してサーバーにログインすると、 >show variables like 'bind_address'; 次の内容が表示されます。

| Variable_name | Value   |
+---------------+---------+
| bind_address  | 0.0.0.0 |
+---------------+---------+

0.0.0.0でない場合は変更する必要があります。

.cnfファイルを見つけるのは難しいかもしれません。たとえば、私の場所は次のようになります。 /etc/mysql/mariadb.conf.d/50-server.cnf しかし、多くの人がそれを見つけるのが難しいので、バージョン/リリース(?)とは非常に異なると思います。

ここであなたがすることはそれを開くことですどの知的財産権。さらにセキュリティが必要な場合は、クライアントIPを追加したり、複数のIPを追加したりできます。しかし、それはこれに限定されます。 (私はいつも0.0.0.0と良いパスワードを使います。それが私が必要とするすべてです。)

おすすめ記事