os: ubuntu 16.04
db: mysql 5.7.25
mysql_install_db is deprecated as of MySQL 5.7.6 because its functionality has been integrated into mysqld, the MySQL server. To initialize a MySQL installation, invoke mysqld with the --initialize or --initialize-insecure option. For more information, see Section 2.10.1, “Initializing the Data Directory”. mysql_install_db will be removed in a future MySQL release.
之前初始化mysql数据库命令 mysql_install_db 从MySQL 5.7.6 开始废弃,使用 mysqld 初始化数据库
mysqld
# which mysqld
# mysqld --verbose --help
-I, --initialize Create the default database and exit. Create a super user
with a random expired password and store it into the log.
--initialize-insecure
Create the default database and exit. Create a super user
with empty password.
–initialize 会在日志里打印出一个随机密码。
–initialize-insecure 不会产生随机密码,第一次登陆数据库使用空密码。
# /usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf \
--basedir=/usr/local/mysql/ \
--datadir=/var/lib/mysql/ \
--user=mysql \
--initialize-insecure \
--ssl \
--explicit_defaults_for_timestamp \
--verbose
mysqld 执行初始化已添加 --ssl 时就不需要再执行,否则需要额外配置 ssl 下,
# /usr/bin/mysql_ssl_rsa_setup --datadir=/var/lib/mysql/ --verbose --uid=mysql
启动 mysql
# systemctl start mysql
使用 mysql 登录
# mysql -h 127.0.0.1 -P 3306 -u root -p
Enter password:
mysql> alter user 'root'@'localhost' identified by 'rootroot';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
参考:
https://dev.mysql.com/doc/refman/5.7/en/mysqld.html
https://dev.mysql.com/doc/refman/5.7/en/mysql-install-db.html
https://dev.mysql.com/doc/refman/5.7/en/mysql-secure-installation.html
https://dev.mysql.com/doc/refman/5.7/en/mysql-ssl-rsa-setup.html