VPSサーバーのMySQLの初期設定状態を確認し、セキュリティ的に問題のある設定項目は修正します。
管理人の環境は、”お名前.com”のVPSサーバーでCentOS6.2です。
MySQLのパッケージの確認
MySQLのどのパッケージがインストールされているか確認します。
(実行例)
$ rpm -qa | grep mysql
mysql-5.1.67-1.el6_3.x86_64
mysql-devel-5.1.67-1.el6_3.x86_64
php-mysql-5.3.3-14.el6_3.x86_64
mysql-libs-5.1.67-1.el6_3.x86_64
mysql-server-5.1.67-1.el6_3.x86_64
設定ファイルの保存場所の確認
(実行例)
$ rpm -qc mysql-libs
/etc/my.cnf
起動スクリプトの配置場所の確認
(実行例)
$ rpm -ql mysql-server | grep init
/etc/rc.d/init.d/mysqld
MySQLアカウントの初期状態
デフォルト状態では、”root”ユーザーと匿名ユーザー(ユーザー名を指定せずにMySQLサーバーに接続できる)がパスワードを設定せずに作られています。
MySQLサーバーに接続する際は、通常は(ユーザーにパスワードが設定されている)
“mysql -u ユーザー名 -p”
と入力してパスワードを入力しますが、初期状態では、
“mysql -u root”や”mysql”(匿名ユーザー、ユーザー名を指定しない)と入力しただけで接続できる状態になっています。
(匿名ユーザーの実行例)
$ mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 30
:
初期状態の設定確認
MySQLサーバーが起動していない場合は、”/etc/rc.d/init.d/mysqld start”で起動します。
MySQLの”root”ユーザーでサーバーに接続し、ユーザーの設定状況を確認します。
(実行例)
$ mysql -u root
mysql> SELECT Host, User,Password FROM mysql.user;
+--------------------+---------------+-------------+ | Host | User | Password | +--------------------+---------------+-------------+ | localhost | root | | | test.example.com | root | | | 127.0.0.1 | root | | | localhost | | | | test.example.com | | | | 127.0.0.1 | | | +--------------------+---------------+-------------+
“root”ユーザー、匿名ユーザー(User欄が空欄)のパスワード欄が空欄になっています。
MySQLのrootユーザーにパスワード設定
上記の各ホスト(localhost,test.example.com,127.0.0.1)のrootユーザーに対してパスワードを設定します。
(実行例)パスワードを’newpwd’とした場合
mysql> SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘newpwd’);
mysql> SET PASSWORD FOR ‘root’@’test.example.com’ = PASSWORD(‘newpwd’);
mysql> SET PASSWORD FOR ‘root’@’127.0.0.1’ = PASSWORD(‘newpwd’);
匿名ユーザーにパスワード設定、または匿名ユーザーを消去
下記手順参照
セキュリティを考慮し、MySQLの匿名ユーザーにパスワードを設定、または削除
設定後の確認
・パスワードが設定されているか確認
mysql> SELECT Host, User,Password FROM mysql.user;
パスワード欄に文字列が入力されている事を確認します。
・MySQLサーバーへの接続確認
mysqlコマンドラインを一度終了し、再度、パスワードを指定してログインできるか確認します。
(実行例)
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
: