2020-03-03
初心者コピペで簡単!データベースサーバー(MySQLとphpMyAdmin)の構築手順の実録メモまとめ
CODELinux
初心者向け!MySQLをインストールする方法【データベースサーバの構築手順】
DB(データベースサーバー)は、サーバー上のデータベースをクライアントサイドから操作できるようにするためのサーバー。
データベースサーバーの構築手順として「MySQLのインストール方法」を初心者向けに解説した記事です。
Wordpress使用する際はデータベースを使う必要があるので、リレーショナル型データベースであるMySQLの導入手順を紹介します。
- 目次
MySQLでの構築
MySQLとは・・・
【MySQLとは・・・・・・・】
MySQLとは世界的に広く利用されているRDBMSで、マルチスレッドをサポートし数千万のレコードを持つデータベースも高速に処理を行えます。
また、CGIやJava・PHPなどの言語よりMySQLに手軽にアクセスが可能です。
MySQLのインストール
# yum -y install mysql-server ・MySQL設定ファイルの変更 # vi /etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock ・出力メッセージを日本語にする(追加) language=/usr/share/mysql/japanese/ old_passwords=1 default-character-set = utf8 追加 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [safe_mysqld] err-log=/var/log/mysqld.log 以下も追加(MySQLクライアントの文字コードをUTF-8にする) [mysql] default-character-set = utf8 :wqで書き換え ・MySQLの起動 # /etc/rc.d/init.d/mysqld start MySQL データベースを初期化中: Installing all prepared tables Fill help tables 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 fedora.kajuhome.com password 'new-password' 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 the benchmarks in the 'sql-bench' directory: cd sql-bench ; perl run-all-tests 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 ] MySQL を起動中: [ OK ] 上記のメッセージはmysql-serverインストール後にはじめて起動した時に出力されます 「MySQL のrootのパスワードが未設定の為、パスワードを設定して下さい」と言う文言です。 ・2回目以降の起動は下記の様に、メッセージ出力されません # /etc/rc.d/init.d/mysqld start MySQL を起動中: [ OK ] ・MySQLの停止 # /etc/rc.d/init.d/mysqld stop MySQL を停止中: [ OK ]
MySQLの初期設定
MySQLを使用するには、上記の「MySQLの起動」を行ってから操作してください。
・MySQL monitorに接続 # mysql -u root Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 to server version: 3.23.58 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. ・インストール直後のデータベース表示 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | test | +--------------------+ 3 rows in set (0.00 sec) ・データベースが「mysql」と「test」の2つが存在している。 FedoraCore5 以降は MySQL Versionが 5 の為、「information_schema」も存在しています。 ・「mysql」データベースのテーブル名表示 mysql> show tables from mysql; +---------------------------+ | Tables_in_mysql | +---------------------------+ | columns_priv | | db | | func | | help_category | | help_keyword | | help_relation | | help_topic | | host | | proc | | procs_priv | | tables_priv | | time_zone | | time_zone_leap_second | | time_zone_name | | time_zone_transition | | time_zone_transition_type | | user | +---------------------------+ 17 rows in set (0.00 sec) columns_priv :フィールドについてのアクセス制限 db :各データベースについてのアクセス制限 func :システムテーブル(ユーザ定義関数) host :ホストによる制限 tables_priv :テーブルについてのアクセス制限 user :ユーザによりアクセスを制限 ・MySQLアカウントのrootが自動的に作成されているがパスワードが設定されていないので設定する。 rootにパスワードを設定する(パスワードを"himichu"とする場合) mysql> SET PASSWORD FOR root@localhost=PASSWORD('himichu'); Query OK, 0 rows affected (0.00 sec) ・MySQL monitorの終了 mysql> exit Bye ・MySQL monitorにrootで接続する(この時、"-p"オプションを指定しパスワード入力をする) mysql> mysql -u root -p ・上記で設定したパスワード"himichu"を入力 Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 to server version: 3.23.58 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. ・「use」コマンドで「mysql」データベースに切り替える。 mysql> use mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A ・データベースが変更された Database changed ・MySQLに接続できるユーザの表示 mysql> select host,user,password from user; +--------------------------+------+------------------+ | host | user | password | +--------------------------+------+------------------+ | localhost | root | 213c744c40ba5e05 | | hogehoge.classic.co.jp | root | | | 127.0.0.1 | root | | | localhost | | | | hogehoge.classic.co.jp | | | +--------------------------+------+------------------+ 5 rows in set (0.00 sec) ・パスワード無しのユーザ(匿名ユーザ)の削除 mysql> delete from user where user=""; Query OK, 0 rows affected (0.00 sec) ・パスワード無しのユーザが削除されたホスト「hogehoge.classic.co.jp」にもパスワードを設定する mysql> SET PASSWORD FOR root@hogehoge.classic.co.jp=PASSWORD('himichu'); Query OK, 0 rows affected (0.00 sec) ・MySQLに接続できるユーザの表示 mysql> select host,user,password from user; +--------------------------+------+------------------+ | host | user | password | +--------------------------+------+------------------+ | localhost | root | 213c744c40ba5e05 | | hogehoge.classic.co.jp | root | 213c744c40ba5e05 | | 127.0.0.1 | root | 213c744c40ba5e05 | +--------------------------+------+------------------+ 3 rows in set (0.00 sec) ・「use」コマンドで「test」データベースに切り替える。 mysql> use test Database changed ・テーブルが存在しない(「test」データベースは試験用の為不要)「test」データベースの削除 mysql> drop database test; Query OK, 0 rows affected (0.00 sec) ・データベースの表示 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | +--------------------+ 2 rows in set (0.00 sec) ・「test」データベースが削除されたMySQL monitorの終了 mysql> exit; Bye
データベースを操作してみる
MySQL monitorに接続 # mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 to server version: 3.23.58 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. 「meibo」データベースを作成 mysql> create database meibo; Query OK, 1 row affected (0.00 sec) データベースの表示 mysql> show databases; +----------+ | Database | +----------+ | meibo | | mysql | +----------+ 2 rows in set (0.00 sec) 「meibo」データベースが作成された 「meibo」データベースを操作する"linux"ユーザの作成 mysql> grant all on meibo.* TO linux@localhost identified BY 'himichu'; Query OK, 0 rows affected (0.00 sec) 上記は「meibo」データベースにローカルからの接続ですべての操作を許す ユーザ"lunux"をパスワード"himichu"で作成しています 設定を反映する mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) 作成した"linux"ユーザで操作できるか、ログインし直す MySQL monitorの終了 mysql> exit Bye "linux"ユーザでログイン # mysql -u linux -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 14 to server version: 3.23.58 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. 「meibo」データベースに「user」テーブルを作成 (この時、「Num」と「Name」フィールドを作成する) mysql> create table meibo.user ( -> Num int NOT NULL primary key auto_increment, -> Name varchar(32) NOT NULL -> ); Query OK, 0 rows affected (0.01 sec) 「meibo」データベースの「user」テーブルを表示 mysql> show fields from meibo.user; +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | Num | int(11) | | PRI | NULL | auto_increment | | Name | varchar(32) | | | | | +-------+-------------+------+-----+---------+----------------+ 2 rows in set (0.00 sec) 「user」テーブルが作成され、指定したフィールドも作成された レコードの挿入(値を"linux"にする) mysql> insert into meibo.user (Name) values ('linux'); Query OK, 1 row affected (0.00 sec) レコードの表示 mysql> select * from meibo.user; +-----+-------+ | Num | Name | +-----+-------+ | 1 | linux | +-----+-------+ 1 row in set (0.00 sec) "linux"のレコードが登録された レコードの挿入(値を"hogehoge"にする) mysql> insert into meibo.user (Name) values ('hogehoge'); Query OK, 1 row affected (0.00 sec) レコードの表示 mysql> select * from meibo.user; +-----+----------+ | Num | Name | +-----+----------+ | 1 | linux | | 2 | hogehoge | +-----+----------+ 2 rows in set (0.00 sec) "hogehoge"のレコードが登録された レコードの削除(キー「Num」が2のレコードを削除) mysql> delete from meibo.user where Num=2; Query OK, 1 row affected (0.00 sec) レコードの表示 mysql> select * from meibo.user; +-----+-------+ | Num | Name | +-----+-------+ | 1 | linux | +-----+-------+ 1 row in set (0.00 sec) "hogehoge"のレコードが削除された 再度、レコードの挿入(値を"hogehoge"にする) mysql> insert into meibo.user (Name) values ('hogehoge'); Query OK, 1 row affected (0.00 sec) レコードの表示 mysql> select * from meibo.user; +-----+----------+ | Num | Name | +-----+----------+ | 1 | linux | | 3 | hogehoge | +-----+----------+ 2 rows in set (0.00 sec) "hogehoge"のレコードが登録された レコードの更新(「Name」が"hogehoge"のレコードを"fedora"に変更) mysql> update meibo.user set Name="fedora" where Name="hogehoge"; Query OK, 1 row affected (0.00 sec) 一致数(Rows matched): 1 変更: 1 Warnings: 0 レコードの表示 mysql> select * from meibo.user; +-----+--------+ | Num | Name | +-----+--------+ | 1 | linux | | 3 | fedora | +-----+--------+ 2 rows in set (0.00 sec) "hogehoge"のレコードが"fedora"に変更された ・MySQL monitorの終了 mysql> exit; Bye
こんな時は・・・
- サービスを起動した時に以下のメッセージが出力された場合、新しい MySQL 権限テーブルを生成すれば解決できる場合があります。
「mysql-server」起動時のログ
Table 'mysql.host' doesn't exist テーブル生成 # mysql_install_db --user=mysql
phpMyAdminインストール
# cd /usr/local/src/ # svn checkout https://phpmyadmin.svn.sourceforge.net/svnroot/phpmyadmin/tags/RELEASE_2_11_9_6/phpMyAdmin phpmyadmin ← phpMyAdminダウンロード # mv phpmyadmin/ /var/www/html/ ← ダウンロードしたphpMyAdminを所定の場所へ移動
php-mysqlインストール
- phpMyAdminはPHPで動作するため、PHPからMySQLデータベースへアクセスするためのパッケージであるphp-mysqlをインストールする
・php-mysqlインストール確認 # rpm -q php-mysql パッケージ php-mysql はインストールされていません。 ・php-mysqlインストール # yum -y install php-mysql ← ※インストールされていない場合のみ
phpMyAdmin設定
サンプル設定ファイルをコピー # cp /var/www/html/phpmyadmin/config.sample.inc.php /var/www/html/phpmyadmin/config.inc.php # chmod 660 /var/www/html/phpmyadmin/config.inc.php ← 設定ファイルのパーミッションを変更 # mkpasswd -l 46 ← mkpasswdコマンドでランダムな46桁の文字列を取得 ※mkpasswdコマンドはこちらを参照 ojwelolk6gmsswpgqosameeBmtxswelzamM4wdfcfolbz ← ランダムな46桁の文字列 # vi /var/www/html/phpmyadmin/config.inc.php ← 設定ファイル編集 $cfg['blowfish_secret'] = 'ojwelolk6gmsswpgqosameeBmtxswelzamM4wdfcfolbz'; ← mkpasswdコマンドで取得したランダムな46桁の文字列を指定 ※上記はログイン時のパスワード暗号化の際に内部的に利用されるパスフレーズであり、ユーザに入力要求されるものではない $cfg['Servers'][$i]['auth_type'] = 'cookie'; ← 認証モードを「クッキー」にする $cfg['Lang'] = 'ja-utf-8'; ← 追加(日本語化) /* * End of servers configuration */ # chown -R root.apache /var/www/html/phpmyadmin/ ← phpMyAdminの所有者を変更
Apache設定
# vi /etc/httpd/conf.d/phpmyadmin.conf ← phpMyAdmin用Apache設定ファイル作成 Alias /phpmyadmin /var/www/html/phpmyadmin 以下は内部からのみアクセスできるようにする場合のみ指定するOrder deny,allow Deny from all Allow from 127.0.0.1 Allow from 192.168.1 ← 内部ネットワークアドレスを指定 # /etc/rc.d/init.d/httpd reload ← Apache設定反映 httpd を再読み込み中: [ OK ]
phpMyAdmin確認
- http://サーバー名/phpmyadmin/へアクセスして、phpMyAdminのログイン画面が表示されること
MySQLに登録されているアカウントでログインできること
※http://サーバー名/phpmyadmin/にアクセスして、
「mcrypt 拡張をロードできません。PHP の設定を確認してください」
と表示された場合は、mcryptパッケージをインストールします
# yum -y install php-mcrypt # reboot ← 念の為にサーバーの再起動
もう一度http://サーバー名/phpmyadmin/にアクセスして、ログイン画面が表示されることを確認します。
※CENTOS5での構築環境になります!現バージョンでは違う部分もあるかと思います。
ランダムなパスワードを生成するには
・mkpasswdコマンドインストール # yum -y install expect ・ランダムなパスワードを生成 # mkpasswd -s 0 kCOjklr83