cnetos7下mysql8的安装方式和mysql5.7的安装方式基本相同。不过每次安装总会遇到一点小的问题。这里总结一下,做个笔记
mysql的的下载地址 https://dev.mysql.com/downloads/repo/yum/
mysql 的安装脚本
cd ~
# 脚本中需要生成密码,这里使用的是 mkpasswd
yum install -y expect
# 下载并安装mysql8.0
wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
rpm -ivh mysql80-community-release-el7-1.noarch.rpm
yum update -y
yum install -y mysql mysql-server mysql-devel
# 修改mysql数据存储的地方
sed -i 's/^datadir/#datadir/' /etc/my.cnf
sed -i '/datadir/adatadir=\/data\/mysql/' /etc/my.cnf
mkdir /data/mysql -p
chown mysql:mysql /data/mysql
service mysqld start
sleep 10
# mysql8 和 mysql5.7一样安装并启动生成的密码在 /var/log/mysqld.log 中
MYSQL_PASSWD=`cat /var/log/mysqld.log | grep password | head -1 | rev | cut -d ' ' -f 1 | rev`
# 生成新的密码, 并删除密码中的双引号和单引号
NEW_PASSWORD=`mkpasswd -l 18 -d 2 -c 3 -C 4 -s 5 | sed $'s/[\'\"]//g' `
# mysql的安全策略不能通过命令行加密码的方式,执行命令。可以把用户名和密码写在配置文件中。
# mysql: [Warning] Using a password on the command line interface can be insecure.
cat > ~/.my.cnf <<EOT
[mysql]
user=root
password="$MYSQL_PASSWD"
EOT
# mysql安全策略 交换模式下,使用 --connect-expired-password 这个选项
# Please use --connect-expired-password option or invoke mysql in interactive mode.
mysql --connect-expired-password -e "alter user 'root'@'localhost' identified by '$NEW_PASSWORD';"
# 把洗的密码,配置文件,不用每次执行mysql命令,都输入密码
cat > ~/.my.cnf <<EOT
[mysql]
user=root
password="$NEW_PASSWORD"
EOT
mysql测试
# 测试
mysql # 输入mysql后可以直接登录
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 8.0.12 MySQL Community Server - GPL
Copyright (c) 2000, 2018, 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.
# 创建数据库正常
create database testdb;
Query OK, 1 row affected (0.03 sec)
安装本身比较顺利,容易出卡壳的地方,就是mysql的安全策略,新版的mysql增强的安全性。比如
一: 安装后,首次启动,会生成一个新的密码。必须对这个密码进行修改,修改以后才能进行,下一步的操作。
二: 默认不能使用简单的密码。