MySQL8.0のインストール
MySQL8.0をインストールします。
1. インストール
# yum --enablerepo=mysql80-community install mysql-community-server
CentOSではデフォルトで「mariadb-libs」がインストールされていますが、上記コマンドを実行すると入れ替わります。
2. MySQLの設定
(1) DBの初期化
DBの初期化を行います。
# mysqld --initialize --user=mysql --datadir=/var/lib/mysql
※5.6までは「mysql_install_db」コマンドで行いましたが、5.7からは変更になりました。
このコマンドで初期化を行うと、初期ユーザとして「root@localhost」が作成されます。
また、初期パスワードが「/var/log/mysqld.log」に書き込まれます。
ちなみに「mysqld --initialize-insecure」とすると、パスワードは空となります。
(2) /etc/my.cnfの設定
MySQLの設定は、「/etc/my.cnf」で行います。
(3) MySQLの起動
設定が完了したら、MySQLのサービスを起動します。
# systemctl start mysqld.service
(4) 自動起動設定
サーバを再起動した場合に自動的にサービスが起動するようにします。
# systemctl enable mysqld.service
(5) mysql_secure_installationの実行
MySQLのセキュリティを向上させるために「mysql_secure_installation」を実行します。
# /usr/bin/mysql_secure_installation
このコマンドは、
- rootユーザのパスワード文字列を設定する
- VALIDATE PASSWORD PLUGINをインストール(Yes|No)
- anonymousユーザを削除する(Yes|No)
- リモートからのrootログインを禁止する(Yes|No)
- TESTデータベースを削除する(Yes|No)
- 権限を再読み出しする(Yes|No)
という作業を対話式に順次実行します。
3. rootパスワードの変更
インストール直後は、「root」ユーザにテンポラリーパスワードが設定されているので、パスワードを変更します。
※前述の「mysql_secure_installation」を実行した場合には不要です。
MySQLにログインします。
# mysql -u root -p
Enter password:
パスワードを変更します。
mysql> SET PASSWORD FOR root@localhost='xxxxxx';
mysql> exit;
※従来の「SET PASSWORD FOR root@localhost=PASSWORD('xxxxxx');」だとSyntaxエラーが発生します。
変更したパスワードでログインできることを確認します。
# mysql -u root -p
Enter password:
ログインできればOKです。
4. その他のコマンド
(1) ユーザ作成
CREATE USER '(ユーザID)'@'localhost' IDENTIFIED WITH mysql_native_password BY '(パスワード)';
GRANT ALL PRIVILEGES ON (テーブル名).* TO '(ユーザID)'@'localhost';
※※【注意事項】※※
「my.cnf」で「skip-name-resolve」を指定している場合には、ホストの名前解決ができないため「localhost」ではエラーとなる。その場合には「127.0.0.1」と記述すること。
5. cronでの実行の場合
定期バックアップなどでコマンドラインからMySQLを実行する場合に、パスワードをコマンドラインに含めると警告が発生しますし、またセキュリティ上問題があります。
そこで、設定ファイルを作成して、コマンドラインから読込みます。
(1) 設定ファイルの作成
「/etc/.mysql_config」という設定ファイルを作成します。
内容は以下の通りです。
[client]
user = root
password = (パスワード)
host = localhost
「root」以外読めないようにします。
# chmod 400 /root/.mysql_config
(2) コマンドラインでの実行
「--defaults-extra-file」オプションで設定ファイルを読み込みます。
【例】
for DBNAME in `ls -p /var/lib/mysql | grep / | tr -d /`
do
# mysqldump
if [ "$DBNAME" = 'performance_schema' ]
then
/usr/bin/mysqldump --defaults-extra-file=/root/.mysql_config --skip-lock-tables --skip-extended-insert $DBNAME > $DBNAME.dump
else
/usr/bin/mysqldump --defaults-extra-file=/root/.mysql_config --events --skip-lock-tables --skip-extended-insert $DBNAME > $DBNAME.dump
fi
done
6. MySQLのコマンド
(1) mysqldump
■データベースを出力
mysqldump --defaults-extra-file=/root/.mysql_config -c -skip-extended-insert (DB名) > (出力ファイル名)
■テーブルを指定して出力
mysqldump --defaults-extra-file=/root/.mysql_config -c -skip-extended-insert (DB名) (テーブル名) > (出力ファイル名)
(2) mysql
■ダンプファイルをインポート
mysql --defaults-extra-file=/root/.mysql_config (DB名) < (ダンプファイル名)
最終更新:2020年08月05日 14:19