新トップページへ | Tip

MySQLの使い方メモ

LastUpdate : 11/08/27

 さくらインターネットではMySQLが使えます。
自分が作ったアプリをいきなりサーバーに上げてテストするには、アレなので、ローカルでMySQLの環境を構築しようかと思います。
とりあえず、MySQLをインストールして、管理はすべてphpMyAdminで行う気でいます。

環境:
 CentOS5.5(86_64)

  1. MySQLをインストールする
  2. MySQLのセットアップ
  3. phpMyAdminをインストールする
  4. 外部からアクセス可能にする

MySQLをインストールする

yumでMySQLをインストールします。

yum install mysql-server

これでインストールするとmysql-serverと依存関係でperl-DBD-MySQLがはいるみたいです。
インストールはこれだけです。らくちんですね。

MySQLのセットアップ

(1) MySQLの設定ファイルを編集します。

/etc/my.cnfを以下のように修正します。
この色の箇所を追加しました。
/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

# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links=0

default-character-set = utf8

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[mysql]
default-character-set = utf8
この修正で文字コードがUTF-8変更できる・・・らしい。
特別理由がなければUTF-8でよいかと思われ。

(2) MySQLを起動する

以下のコマンドでとりあえず起動させる。
/etc/rc.d/init.d/mysqld start
[root@localhost ~]# /etc/rc.d/init.d/mysqld start
Initializing MySQL database:  Installing MySQL system tables...
OK
Filling help tables...
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h localhost.localdomain password 'new-password'

Alternatively you can run:
/usr/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/bin/mysqlbug script!

The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com
[  OK  ]
Starting MySQL:  [  OK  ]
[root@localhost ~]#
こんな感じで起動する。いろいろやれというメッセージが出ているが、本番運用をするわけではないので、特に不要でしょう(たぶんな!)。

(3) 初期設定ツール(?)を起動する

初期設定的なことをやってくれるツールがあるので、それを起動する。
いくつか問い合わせられるが基本的にenterで問題ないハズ。
[root@localhost ~]# mysql_secure_installation




NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!


In order to log into MySQL to secure it, we'll need the current
password for the root user. If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):  
←何も設定してないので無し。enterを押下
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

Set root password? [Y/n] 
←enterを押下
New password:      
←好きなパスワードを入力
Re-enter new password:   
←再度パスワードを入力
Password updated successfully!
Reloading privilege tables..
... Success!


By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] 
←enterを押下
... Success!

Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] 
←enterを押下
... Success!

By default, MySQL comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] 
←enterを押下
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] 
←enterを押下
... Success!

Cleaning up...



All done! If you've completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!


[root@localhost ~]#
とりあえず、初期設定が終わったので、ちゃんと動いているかみてみます。
[root@localhost ~]# mysql -u root -p  ←MySQLのコンソールみたいなのを開く
Enter password: 
←上で設定したパスワードを入力
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 5.0.77 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show databases 
←データベース一覧を表示するコマンドを入力
-> ;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
+--------------------+
2 rows in set (0.00 sec)

mysql> quit 
←コンソールから抜ける
Bye
[root@localhost ~]#

動いているみたいなので、とりあえずよしとします。

(4) OS起動後、自動起動するように設定する

インストール直後、自動起動するようになっていないみたいなので、設定します(ランレベルはお好みで)。

[root@localhost ~]# chkconfig --list mysqld
mysqld 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@localhost ~]# chkconfig --level 345 mysqld on
[root@localhost ~]# chkconfig --list mysqld
mysqld 0:off 1:off 2:off 3:on 4:on 5:on 6:off
[root@localhost ~]#

phpMyAdminをインストールする

管理ツールである、phpMyAdminをインストールします。
phpMyAdminはphpでできたwebアプリです。ですので、apacheとphpがインストールされていなければなりません。OSインストール時にデフォルト設定でインストールすると勝手にインストールされるみたいです。

(1)phpMyAdminをダウンロードする

http://www.phpmyadmin.net/home_page/downloads.php からファイルをDLします。
CentOS5.5にインストールされるphpは5.1.6らしい。現時点(2011/08/28)の最新版は3.4.4ですが、phpのバージョンを5.2以上を要求します(「PHP 5.2+ is required」とか言われる)。
よって、CentOSでは、今のところ最新版は使えません(手動でphpのバージョンを上げた場合は別ですが。。。)。

なので、古いものをダウンロードします。
http://sourceforge.net/projects/phpmyadmin/files/phpMyAdmin/ の中にある、バージョン3系列の一番古いものでも、5.2以上を要求する様子です。なので、2系列に切り替えます。
2系列の最新版(2.11.11.3)は、phpのバージョンを4.2以上とかいてあるのでこれならOKなはず。
なのでこれを使います

(リンク先は直接指定して、wgetしてもダメです。いったんなにかで開いて、DLしてる途中そのファイルのURLをこぴってきて、そのURLでwgetすればOK。まぁ・・・どうでもいい話ですがw)
[root@localhost ~]# tar xvfz phpMyAdmin-2.11.11.3-all-languages.tar.gz
解凍すると、「phpMyAdmin-2.11.11.3-all-languages」というディレクトリが現れます。

(2)ファイルをapacheの公開ディレクトリへ移動しておく

phpで動くwebアプリなので、apacheの公開ディレクトリに、上記の解凍したファイルを移動します。
ディレクトリ名前は、このままでは長すぎるので、「phpMyAdmin」にします(好きな名前にしてください)
[root@localhost ~]# mv phpMyAdmin-2.11.11.3-all-languages /var/www/html/phpMyAdmin

(3)必要なソフトウェアをインストールする

php-mysqlというソフトウェアが必要らしいので、インストール。また、php-mcryptとphp-mbstringいうのも必要らしい。
[root@localhost ~]# yum install php-mysql php-mcrypt php-mbstring

(4)phpMyAdminの設定を行う

サンプルの設定ファイルが用意されているので、それをコピーして、使用する設定ファイルとする。
そして、パーミッションも変えておきます。
[root@localhost phpMyAdmin]# pwd
/var/www/html/phpMyAdmin
[root@localhost phpMyAdmin]# cp config.sample.inc.php config.inc.php
[root@localhost phpMyAdmin]# chmod 660 config.inc.php
そして、config.inc.phpを編集します。
変更するのは以下の場所だけでとりあえずはOKっぽい。
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

上記のようになっているところを、以下のように変更(適当な文字列でうめる)。この値は暗号化のキーだか何かに使われるらしい

$cfg['blowfish_secret'] = '@;:l@;[rte[luwl@t5e@lh[edluyyhnpkewr@t'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
あと、phpMyAdminディレクトリ以下のファイルの所有者を変えておきます。
[root@mysql_server html]# chown -R root:apache phpMyAdmin

(5)起動する

webサーバ用のポート(普通は80番)をオープンするようにファイヤーウォールの設定をし、webサーバーを起動。
URLはこんな感じ(解凍したディレクトリをコピーするとき、phpMyAdminという名前にした場合)

http://ホストのアドレス/phpMyAdmin/
ログイン画面が表示されるので、ユーザ名に「root」、パスワードに、MySQLをインストール時に入力したパスワードを入力する(誰もユーザを作成していない場合)
以上で完了。

外部からアクセス可能にする

以下の内容については、まだ調べ中。

デフォルトの設定では、localhostからしかアクセスできないようになっている。外部からアクセス可能にするには、SQLを投げてやる必要がある。

ユーザー毎に、どのホストから接続可能か・・・と細かく設定できるらしい。
以下のSQLを使う。

GRANT ALL PRIVILEGES ON *.* TO mysql@'192.168.%' IDENTIFIED BY 'passwd' WITH GRANT OPTION

この色で記したところは各自の環境に返る。*.*の指定になってるので、適当に変えたい場合は変える。
1番目:ユーザーID
2番目:許可するホスト。%でワイルドカード指定が可能。すべてのホストから許可したい場合は%だけとなる
3番目:パスワード

これで、ユーザーができる。userテーブルに、レコードが追加される。
IDがユニークキーかと思ったがそうではない様子。どーなってんだか、勉強中。