パスワードなしでLinux rootユーザーのmysql rootアクセスを許可する


28

ルートとしてログインし、ホスト名とパスワードなしで「mysql」と入力すると、cPanelでmysqlルートユーザーに直接アクセスできます。

LinuxのrootユーザーがcPanelで行うのと同じ方法でmysql rootユーザーへのパスワードなしのログオンを取得する非cpanelサーバーの1つでこれを行いたいと思います。

これは可能ですか?

回答:


53

これを行う最も簡単な方法は、〜/ .my.cnfファイルのクライアントセクションを使用し、そこに資格情報を追加することです。

[client]
user=root
password=somepassword
...

そのファイルもrootだけが読めるようにすることをお勧めします。


1
この作品と、これはcPanelのは、それをやっている方法ですはい
user1066991

9
潜在的なセキュリティの問題を指摘する必要があり/etc/my.cnfます。mysqlサーバーが起動に使用するので、これを編集しないように少し注意する必要があります。mysql rootユーザーを/etc/my.cnfANYONEに配置すると、パスワードなしですべてのデータベースに対するすべての特権を持つmysqlサーバーを使用できます。Iain .my.cnfは、ルートのホームでシェルユーザー自身を指しますが、これはもちろん正しいことです。
Koen van der Rijt

〜/ .my.cnfファイルがない場合はどうなりますか?作成してmysqldを再起動すると、これを実行できるはずですか?
アマルゴビヌス

21

mysql 5.7+では、初期セットアップに空のパスワードを設定すると、mysqlはauth_socket戦略として自動的に使用します。戦略を変更せずにパスワードを更新しようとしても、結果はありません。ユーザーがの場合、パスワードを使用せずにいつでもログインできますroot

解決策 次のコマンドを実行して、認証戦略を変更し、パスワードを設定します

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY ''

参照:https : //www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/


3
動作させるには、最後に空の文字列を追加する必要がありましたALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
。– kramer65

興味深い@kramerは、あなたとして設定した場合にのみ機能します... BY "";。ありがとう!
フアンアントニオ

passwiordを「ANY_PASSWORD」に変更し、パスワードをクリアしていません。パスワードなしでクリアしてログインするには、空の文字列に設定します。
フェルナンドコシュ

7

MySQL 5.6.6以降では、mysql_config_editorを使用して、自動的にログインする暗号化されたファイルを作成できます。

mysql_config_editor set --login-path=client --host=localhost --user=root --password

次に、プロンプトが表示されたらパスワードを入力します。

注:パスワードに「#」が含まれていて、場合によっては他の文字が含まれている場合は、パスワードを入力するときに一重引用符を使用してください。


一重引用符のコメントについて詳しく説明してください。ターミナルでパスワードの入力を求められています。パスワードを一重引用符で囲んでいますか
user2299958

はい、引用符なしで入力すると、特殊文字が含まれていると機能しないことがわかりました。そのため、プロンプトが表示されたら、 '(単一引用符)、パスワード、'の順に入力します。
ブライアン・デターリング

0

mysqlのrootパスワードのみを含むファイルを作成し、rootのみが読み取れるようにします。

# ls -l /root/.mysqlpw 
-rw------- 1 root root 7 2013-08-19 13:24 /root/.mysqlpw

以下を使用してデータベースをインポートできます。

# mysql -u root -p`cat /root/.mysqlpw ` yourdatabase < databasedump.sql

または、データベースに接続してmysqlコマンドを発行します

# mysql -u root -p`cat /root/.mysqlpw ` yourdatabase
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 20460
Server version: 5.1.63-0ubuntu0.10.04.1 (Ubuntu)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| yourdatabase       |
+--------------------+
3 rows in set (0.00 sec)

mysql> show tables;
...

5
これは他の答えよりもはるかに多くの作業です。パスワードが短すぎます。:)
マイケルハンプトン

8
こんなことしないで。これは、いずれかを読み取ることができるコマンドラインにパスワードをかけるps(1)
CAMH

それは本当に良い考えではありません
フェルナンドコシュ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.