web-dev-qa-db-ja.com

Ubuntu上のmysqlの複数のrootユーザーアカウント

私はubuntu12.04を使用していて、物事を安全にしようとしています。私はまだLinuxに慣れていないので、これをどのように解釈するのかよくわかりません。

mysql -u root -pを使用してrootアカウントにログインし、SELECT User FROM mysql.user;と入力したすべてのユーザーを確認すると、次のように表示されます。

+------------------+
| User             |
+------------------+
| root             |
| root             |
|                  |
| root             |
|                  |
| Testing          |
| debian-sys-maint |
| phpmyadmin       |
| root             |
+------------------+

Phpmyadminにログインして、各ルートアカウントが何を説明しているかを確認したところ、ホストがすべて異なることに気付きました。ローカルホスト、127.0.0.1、:: 1および別のIPアドレス。これらすべてを保持する必要がありますか?私は現在、(キーペアを使用して)サーバーにSSHで接続し、ターミナルまたはPHPMyadminを介してURLから直接MySQLにアクセスしているため、ローカルホストのルートアカウントからのみアクセスし、他のアカウントからはアクセスしないと確信しています。

Rootパスワードを変更すると、他のすべてのMySQLルートアカウントが(異なるホストから)変更されますか?この状況であなたたちはそれをより安全にするために何をしますか?

これが私がやろうと思っていたことですが、もっと良い方法があるかもしれません。 MySQLのrootユーザーのパスワードを長くてランダムなものに変更し(そしてそれを書き留めて)、日常の管理のために短いパスワードで別のアカウントを作成しようとしていました。

記録のために、私はすでにPHPMyAdminへのIPアクセスを制限し、エイリアスを作成しました。ジャークがそれを取得しようとするのを防ぐために、できる限りのことをしたいだけです。

3
user1104854

それらはすべて「root」という名前ですが、MySQLはそれらの各ユーザーエントリを一意のアカウントとして認識します。アカウントは、「ユーザー」と「ホスト」の組み合わせに基づいています。それらのそれぞれcanは個別のパスワードを持つことができますが、それは簡単にアカウント管理の悪夢になる可能性があります。

アカウントのパスワードを変更する方法はいくつかありますが、その方法によっては、アカウントの同期を維持するために、アカウントごとにパスワードを繰り返す必要がある場合があります。

最初の方法(おそらくほとんどの人が精通している方法)は、SET PASSWORDを使用することです。

Shell> mysql -u root -p
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR 'root'@'::1' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR 'root'@'Host_name' = PASSWORD('newpwd');

それらを一度に更新したい場合は、UPDATEを使用できます

Shell> mysql -u root -p
mysql> UPDATE mysql.user SET Password = PASSWORD('newpwd')
    ->     WHERE User = 'root';
mysql> FLUSH PRIVILEGES;

mysqladminツールを使用する場合の3番目の方法

Shell> mysqladmin -u root password "newpwd"
Shell> mysqladmin -u root -h Host_name password "newpwd"

この方法を使用する場合は、次の点に注意する必要があります。

mysqladminアカウントのパスワードを設定するrootメソッドは、'root'@'127.0.0.1'または'root'@'::1'アカウントでは機能しません。前に示したSET PASSWORDメソッドを使用します。

MySQLサイト の詳細

日常のタスクに別のアカウントを使用するというあなたの考えに同意します。手間をかけすぎずに、必要なもので機能する権限の適切な組み合わせを見つける必要があります。

また、rootのログインなどのデータベースログインを監視するために、サーバーログを定期的に確認します(またはツールを配置します)。

インストールを保護するためにできることは他にもたくさんありますが、それはこの範囲を超えて簡単に拡大する可能性があります。

3
pferate

Ubuntu 12.04に新しくインストールされたMySQLは、これを示しています。

 mysql> select user、Host from mysql.user; 
 + ------------------ + --------- -+ 
 |ユーザー|ホスト| 
 + ------------------ + ----------- + 
 |ルート| 127.0.0.1 | 
 |ルート| :: 1 | 
 | |ローカルホスト| 
 | debian-sys-maint |ローカルホスト| 
 |ルート|ローカルホスト| 
 | | myserver | 
 |ルート| myserver | 
 + ------------------ + ----------- + 

127.0.0.1, ::1, localhost, myserver(server hostname)はデフォルトで設定されています。これらのエントリは実質的に同じであり、::1はIPV6と同等のlocalhostであるため、通常は安全です。

したがって、基本的に、これらのエントリは、これらのホストがrootとしてMySQLに接続することを許可していることを示しています。あなたの場合、another IP addressがルートとしてMySQLに接続することも許可しています。そのIPアドレスからMySQLに接続するスクリプトまたはアプリがない場合は、そのエントリを削除することをお勧めします。

まだrootアカウントが1つあるため、パスワードを変更すると、ホストに関係なくすべての接続に反映されます。

この非常に役立つコマンドを実行して、MySQLサーバーを保護することもできます。

 Sudo mysql_secure_installation 
3
user241