はじめに
これまで、NginXのインストールからphp-fpmのインストールまでを行ってきました。
本記事では、mysqlの導入までを行います。
(あくまでローカルの開発環境をすぐに構築するということに焦点を当てています。
細かい設定はまるっきり省いています)
NginX構築に関しては下記を参照ください。
PHP環境構築については、こちらを参照ください。
FTPサーバの準備については、こちらを参照ください
mysqlのインストール
インストールするまえに、既存でインストールされているmariadbのライブラリを削除します。
$ yum remove mariadb-libs
$ rm -rf /var/lib/mysql
下記の様に削除が完了です。
読み込んだプラグイン:fastestmirror, langpacks
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ mariadb-libs.x86_64 1:5.5.65-1.el7 を 削除
--> 依存性の処理をしています: libmysqlclient.so.18()(64bit) のパッケージ: 2:postfix-2.10.1-6.el7.x86_64
--> 依存性の処理をしています: libmysqlclient.so.18(libmysqlclient_18)(64bit) のパッケージ: 2:postfix-2.10.1-6.el7.x86_64
--> 依存性の処理をしています: mariadb-libs(x86-64) = 1:5.5.65-1.el7 のパッケージ: 1:mariadb-5.5.65-1.el7.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ mariadb.x86_64 1:5.5.65-1.el7 を 削除
---> パッケージ postfix.x86_64 2:2.10.1-6.el7 を 削除
--> 依存性解決を終了しました。
依存性を解決しました
===================================================================================================================================
Package アーキテクチャー バージョン リポジトリー 容量
===================================================================================================================================
削除中:
mariadb-libs x86_64 1:5.5.65-1.el7 @base 4.4 M
依存性関連での削除をします:
mariadb x86_64 1:5.5.65-1.el7 @base 49 M
postfix x86_64 2:2.10.1-6.el7 @anaconda 12 M
トランザクションの要約
===================================================================================================================================
削除 1 パッケージ (+2 個の依存関係のパッケージ)
インストール容量: 65 M
上記の処理を行います。よろしいでしょうか? [y/N]y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
削除中 : 2:postfix-2.10.1-6.el7.x86_64 1/3
削除中 : 1:mariadb-5.5.65-1.el7.x86_64 2/3
削除中 : 1:mariadb-libs-5.5.65-1.el7.x86_64 3/3
検証中 : 1:mariadb-libs-5.5.65-1.el7.x86_64 1/3
検証中 : 1:mariadb-5.5.65-1.el7.x86_64 2/3
検証中 : 2:postfix-2.10.1-6.el7.x86_64 3/3
削除しました:
mariadb-libs.x86_64 1:5.5.65-1.el7
依存性の削除をしました:
mariadb.x86_64 1:5.5.65-1.el7 postfix.x86_64 2:2.10.1-6.el7
完了しました!
リポジトリを追加します
リポジトリ公式サイトは下記を参照
$ yum localinstall http://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
mysqlのリポジトリが登録されていることを確認します。
$ ls /etc/yum.repos.d/ | grep mysql*
mysql-community-source.repo
mysql-community.repo
問題なく追加されていました。
早速mysqlをインストールします。
$ yum install mysql-community-devel install mysql-community-server
インストール確認チェック
$ mysql --version
mysql Ver 8.0.20 for Linux on x86_64 (MySQL Community Server - GPL)
これでversion: 8.0.20インストールは完了です。
自動起動を有効に起動します。
$ systemctl enable mysqld
$ systemctl start mysqld
起動状態を確認します。
$ systemctl status mysqld
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since 木 2020-05-07 16:14:12 JST; 2min 52s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 14626 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 14722 (mysqld)
Status: "Server is operational"
Tasks: 38
CGroup: /system.slice/mysqld.service
└─14722 /usr/sbin/mysqld
5月 07 16:14:06 centos-7.shared systemd[1]: Starting MySQL Server...
5月 07 16:14:12 centos-7.shared systemd[1]: Started MySQL Server.
問題なく起動していることを確認しました。
次は、mysqlの設定です。
mysqlの設定
初期パスワードの変更
まずは、インストール時の初期パスワードを確認しmysqlにログインします。
$ cat /var/log/mysqld.log | grep root
2020-05-07T07:14:10.506362Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: [パスワード]
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.20
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
ログイン完了です。
次に初期パスワードを変更します。(自分の覚えやすいパスワード)
パスワード条件は下記の通りです。
- 8文字以上
- 英大文字・小文字・数字・記号を含める。
※ ここでは仮に「Password!321」としています。
mysql> ALTER USER 'root'@'localhost' identified BY 'Password!321';
Query OK, 0 rows affected (0.01 sec)
変更後のパスワードでログインできれば問題ありません。
とりあえず、上記でmysqlは動作するところまできました。
次はphpmyadminのインストールです。
phpmyadmin インストール
まず、以下のコマンドを実行してphpmyadminのリポジトリを有効化します。
※ ここでは、php73をインストール済みとしています。
$ yum info --enablerepo=remi,remi-php73 phpmyadmin
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: ftp-srv2.kddilabs.jp
* epel: ftp.yz.yamagata-u.ac.jp
* extras: ftp-srv2.kddilabs.jp
* remi: ftp.riken.jp
* remi-php73: ftp.riken.jp
* remi-safe: ftp.riken.jp
* updates: ftp-srv2.kddilabs.jp
利用可能なパッケージ
名前 : phpMyAdmin
アーキテクチャー : noarch
バージョン : 5.0.2
リリース : 2.el7.remi
容量 : 6.9 M
リポジトリー : remi
要約 : A web interface for MySQL and MariaDB
URL : https://www.phpmyadmin.net/
ライセンス : GPLv2+ and MIT and BSD
説明 : phpMyAdmin is a tool written in PHP intended to handle the administration of
: MySQL over the Web. Currently it can create and drop databases,
: create/drop/alter tables, delete/edit/add fields, execute any SQL statement,
: manage keys on fields, manage privileges,export data into various formats and
: is available in 50 languages
インストールします。
yum --enablerepo=remi-php73 install phpMyAdmin
phpMyAdmin用データベース作成
下記SQLファイルのphpmyadminへの権限んを与えます。
/usr/share/phpMyAdmin/sql/create_tables.sql
-- (activate this statement if necessary)
GRANT SELECT, INSERT, DELETE, UPDATE, ALTER ON `phpmyadmin`.* TO
'hogehoge'@localhost;
編集後、mysqlにログインし実行しますsqlファイルを実行します。
mysql> source /usr/share/phpMyAdmin/sql/create_tables.sql
Query OK, 1 row affected, 2 warnings (0.01 sec)
Database changed
〜中略
Query OK, 0 rows affected, 2 warnings (0.00 sec)
php.iniの設定
次にphp.iniの設定を行ます。
$ vim /etc/php.ini
~中略
[Session]
~中略
; RPM note : session directory must be owned by process owner
; for mod_php, see /etc/httpd/conf.d/php.conf
; for php-fpm, see /etc/php-fpm.d/*conf
;session.save_path = "/tmp"
session.save_path = "/var/lib/php/session"
次に、セッションディレクトリにnginxがアクセスできるようにパーミッションを変更します
$ chown -R root.nginx /var/lib/php/session
php-fpmの設定変更
listenの設定をsockに変更します。
$ vim /etc/php-fpm.d/www.conf
;listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php-fpm.sock
上記追加後、php-fpmを再起動します。
$ systemctl restart php-fpm
再起動後、sockファイルが作られていることを確認します。
$ ls -l /var/run/php-fpm/php-fpm.sock
srw-rw----. 1 nginx nginx 0 5月 7 20:59 /var/run/php-fpm/php-fpm.sock
nginxの設定変更
次に、nginxの設定を変更します。
$ vim /etc/nginx/conf.d/default.conf
下記内容を追加します。
また、127.0.0.1:9000になっている部分をsockに変更します。
#fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
location /phpMyAdmin {
alias /usr/share/phpMyAdmin/;
try_files $uri $uri/ /index.php;
location ~ ^/phpMyAdmin/(.+\.php)$ {
alias /usr/share/phpMyAdmin;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME /usr/share/phpMyAdmin/$1;
include fastcgi_params;
fastcgi_intercept_errors on;
}
}
上記追加後、nginxを再起動します。
$ systemctl restart nginx
Firewallの設定
mysqlの外部接続を許可します。
$ firewall-cmd --add-service=mysql --zone=public --permanent
$ firewall-cmd --reload
接続確認
実際に「http://localhost/phpMyAdmin/index.pnp」にアクセスしてみます。
問題なくアクセスできました。
mysqlへのログインに失敗!!
phpMyAdminの表示まではできましたが、mysqlへのログインができませんでした。
今回導入したmysqlのバージョンは8.0.20で、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> ALTER USER 'root'@'localhost' identified WITH mysql_native_password BY '[自身のパスワード]';
Query OK, 0 rows affected (0.00 sec)
また、my.cnfにも下記を追記します
[mysqld]
# 旧 MySQL Clientとの互換性確保
default_authentication_plugin=mysql_native_password
上記設定後、mysqldを再起動します。
systemctl restart mysqld
再度、phpMyAdminにアクセスし、ログインしてみます。
ログインできました。
最後に
mysql8系の認証設定でかなりつまずきました。
参考にしてみてください。