MySQL 4.1系 phpMyAdminでログインができないとき

MySQL4.1系ではパスワードの認証方法が変わってphpMyAdminへログインできなくなる症状がでる。old-passwordを利用することでログインできるようになる。
my.cnf へold_passwordsの記述を追加して編集してmysqlを再起動する。

vi /var/db/mysql/my.cnf
--------------------------------------------------
[mysqld]
old_passwords
--------------------------------------------------
/usr/local/etc/rc.d/mysql-server restart

環境変数を確認してold_passwordsがONになっていればOK。

mysql -u root -p
mysql> show variables;
省略
| old_passwords                   | ON
省略

既にユーザへパスワードを設定してしまっている場合はold-passwordのオプションをつけて再設定する。

/usr/local/bin/mysqladmin -u root old-password 'yourpass' -p

MySQL phpMyAdmin インストール

MySQLとphpMyAdminをインストールする。

サーバのホスト名がwww.example.comとした場合にhttp://www.example.com/phpMyAdmin/というURLでphpMyAdminへアクセスできるように設定する。

MySQLをインストールしてmysql_secure_installationコマンドで不要な匿名ユーザやテストデータベースを削除し、rootのパスワードをMkWBmX25rPYkとして設定する。

yum -y install mysql-server
chkconfig mysqld on
chkconfig  --list mysqld
----------------------------------------------------------------------
mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off
----------------------------------------------------------------------
/etc/rc.d/init.d/mysqld start
mysql_secure_installation
----------------------------------------------------------------------
Enter current password for root (enter for none): (まだパスワードを設定していないのでEnterキーを押す)
Set root password? [Y/n] y
New password: MkWBmX25rPYk (パスワード入力)
Re-enter new password: MkWBmX25rPYk (パスワード入力)
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
----------------------------------------------------------------------

あとの設定はCentOS5と6の場合で内容が異なる。


CentOS 6の場合

使用する文字コードをUTF-8に設定する。

vi /etc/my.cnf
--------------------------------------------------------------
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
character-set-server=utf8
skip-character-set-client-handshake
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
--------------------------------------------------------------
/etc/rc.d/init.d/mysqld restart

文字コードがUTF-8になっているか確認する。

mysql -u root -p
mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
mysql> exit
Bye

phpMyAdminをダウンロードおよび設置とApacheの設定を行う。Apacheは既にインストール済みであると想定している。
最新版のphpMyAdminは本家サイトで確認する。

phpMyAdmin ダウンロードページ

CentOS6でインストールされるMySQLのバージョンは5.1系ですが、phpMyAdmin4.2系以降はMySQL5.5移行のバージョンを対象としているため利用できません。phpMyAdmin4.0系の最新版の利用を検討して下さい。

cd /usr/local/src/
wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/4.0.10.9/phpMyAdmin-4.0.10.9-all-languages.tar.gz
tar zxvf phpMyAdmin-4.0.10.9-all-languages.tar.gz
mv phpMyAdmin-4.0.10.9-all-languages /var/www/phpMyAdmin
chown -R root:apache /var/www/phpMyAdmin/
vi /etc/httpd/conf.d/phpmyadmin.conf
------------------------------------------------------
Alias /phpMyAdmin "/var/www/phpMyAdmin"
<Directory "/var/www/phpMyAdmin">
Order allow,deny
Allow from all
</Directory>
------------------------------------------------------
apachectl -t
Syntax OK
/etc/rc.d/init.d/httpd reload

MySQL5.1ではdefault-character-setではなくcharacter-set-serverを使用する。
MySQL5.1ではログに警告がでるくらいだが、MySQL5.5くらいのバージョンになると完全に使えなくなるので、念のためcharacter-set-serverを使用した方がよいだろう。
また、phpMyAdminは2系とは異なり、特に設定ファイルを作成しなくてもファイルを展開するだけである程度は利用できるようになっている。


CentOS 5の場合

文字コードがlatin1になっているのをUTF-8に変更する。EUCの場合はutf8をujisと置き換えてください。

追記: 2008/11/22
以前は”init-connect=SET NAMES utf8″を設定していました。しかし、どんな場合でもUTF-8として扱う強制的な設定なため、他の文字コードも混在する場合には不具合の原因となる場合があります。現在はコメントアウトにしています。プログラム側で文字コードの修正ができない場合など有用な場合もあります。

cp /etc/my.cnf /etc/my.cnf.org
vi /etc/my.cnf
--------------------------------------------------------------
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
default-character-set=utf8
skip-character-set-client-handshake
#init-connect=SET NAMES utf8
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
default-character-set=utf8
[mysql]
default-character-set=utf8
--------------------------------------------------------------
/etc/rc.d/init.d/mysqld restart
mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | ujis                       |
| character_set_connection | ujis                       |
| character_set_database   | ujis                       |
| character_set_filesystem | binary                     |
| character_set_results    | ujis                       |
| character_set_server     | ujis                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
mysql>exit

PHPとPHPのモジュールインストール

PHPのインストールをしていない場合はインストールしてください。

yum -y install php php-mysql php-mbstring php-pear php-gd

phpMyAdminのインストール

最新版は本家からダウンロードしてください。phpMyAdmin ダウンロードページ/

CentOS5.2のPHPのバージョンが5.1系なので、PHP5.2以上が必要なphpMyAdmin3系はデフォルトでは利用できません。phpMyAdmin2系の最新版をご検討ください。

cd /usr/local/src/
wget http://jaist.dl.sourceforge.net/sourceforge/phpmyadmin/phpMyAdmin-2.11.9.3-all-languages.tar.gz
tar zxvf phpMyAdmin-2.11.9.3-all-languages.tar.gz
mv phpMyAdmin-2.11.9.3-all-languages /var/www/phpMyAdmin
chown -R root:apache /var/www/phpMyAdmin/
vi /etc/httpd/conf.d/phpmyadmin.conf
------------------------------------------------------
Alias /phpMyAdmin "/var/www/phpMyAdmin"
<Directory "/var/www/phpMyAdmin">
Order allow,deny
Allow from all
</Directory>
------------------------------------------------------
/etc/rc.d/init.d/httpd reload
mkdir /var/www/phpMyAdmin/config
chmod 777  /var/www/phpMyAdmin/config
http://www.example.com/phpMyAdmin/scripts/setup.php にアクセス
--------------------------------------------------------------------------------
Load ボタン
Servers Add ボタン
Authentication type = http
Add ボタン
Save ボタン
--------------------------------------------------------------------------------
mv /var/www/phpMyAdmin/config/config.inc.php /var/www/phpMyAdmin/config.inc.php
http://www.example.com/phpMyAdmin/ にアクセスしてログイン確認
ID: root
PW: MySQL root パスワード
rm -rf /var/www/phpMyAdmin/config
chmod 444 /var/www/phpMyAdmin/config.inc.php
chmod 000 /var/www/phpMyAdmin/scripts