よくわからないエンジニア

よく分からないエンジニアの日々の記録

よくわからないエンジニア

CentOS7 mysql5.7 初期設定

前回導入したmysql5.7の初期設定を実施します。
とりあえずサービスの起動してログインします。

目次

mysql5.7初期設定

まずはmysql用のユーザーとグループを作っておきます。

# groupadd -g 27 mysql
# useradd -g 27 -u 27 mysql

管理しやすいようにdata,innodb,varディレクトリを作ります。mysqlにディレクトリの所有者移しておきます。

# mkdir -p var data innodb
# chown -R mysql:mysql data innodb var

ディレクトリetcを作成し、その下にmy.cnfを作ります。

# mkdir -p etc
# vim etc/my.cnf
[client]
socket          = /usr/local/mysql/var/mysql.sock

[mysqld]
user = mysql
port            = 3306
socket          = /usr/local/mysql/var/mysql.sock

innodb_data_home_dir = /usr/local/mysql/innodb/
innodb_data_file_path=ibdata1:4G
innodb_file_per_table

なんとなく準備出来たので、初期化をします。5.7からmysql_install_dbではなく、mysqldでの初期化が推奨になりました。insecureオプションを付けると、rootの初期パスワードを設定なしにしてくれる(と思う)。

#./bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
2017-11-16T04:10:48.300089Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
 100 200 300 400 500 600 700 800 900 1000 1100 1200 1300 1400 1500 1600 1700 1800 1900 2000 2100 2200 2300 2400 2500 2600 2700 2800 2900 3000 3100 3200 3300 3400 3500 3600 3700 3800 3900 4000
2017-11-16T04:10:55.447135Z 0 [Warning] InnoDB: New log files created, LSN=45791
2017-11-16T04:10:55.488765Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2017-11-16T04:10:55.545943Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 2487bd7b-ca84-11e7-9606-fa163e73f66e.
2017-11-16T04:10:55.547531Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2017-11-16T04:10:55.549359Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.

権限周りが上手く行っていれば大丈夫なはずです。
後は、サービス起動用のスクリプトを準備しておきます。pidの場所等は変更しましたので、diffをご参照下さい。

# cp -p support-files/mysql.server  /etc/init.d/mysql.server
# diff -u   /usr/local/mysql/support-files/mysql.server  /etc/init.d/mysql.server
--- /usr/local/mysql/support-files/mysql.server 2017-11-06 12:51:43.000000000 +0900
+++ /etc/init.d/mysql.server    2017-11-08 18:36:25.643912272 +0900
@@ -43,8 +43,8 @@
 # If you change base dir, you must also change datadir. These may get
 # overwritten by settings in the MySQL configuration files.

-basedir=
-datadir=
+basedir=/usr/local/mysql
+datadir=/usr/local/mysql/data

 # Default value, in seconds, afterwhich the script should timeout waiting
 # for server start.
@@ -60,7 +60,7 @@
 # The following variables are only set for letting mysql.server find things.

 # Set some defaults
-mysqld_pid_file_path=
+mysqld_pid_file_path=/usr/local/mysql/var/mysql.pid
 if test -z "$basedir"
 then
   basedir=/usr/local/mysql

それではスクリプト使って起動してみます。

# service mysql.server start
Starting MySQL.Logging to '/usr/local/mysql/data/db1.unknownengineer.local.err'.
 SUCCESS!

プロセスもちゃんと起動していたら早速ルートでログインします。

# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.20 Source distribution

Copyright (c) 2000, 2017, 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>

とりあえず最低限、使える所まできました。