一、实验环境
操作系统: CentOS 7.2 Minimal
MySQL 版本: 5.7.16
IP: 192.168.1.105
二、防火墙、selinux设置
# setenforce 0
# sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
# firewall-cmd --permanent --zone=public --add-port=3306/tcp
# firewall-cmd --reload
三、卸载mariadb相关组件
注:一般是 mariadb-libs
# rpm -e --nodeps $(rpm -qa | grep mariadb*)
# rpm -qa | grep mariadb* | xargs rpm -e --nodeps
四、从MySQL官网下载MySQL rpm合集包
# wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar
# tar -xvf mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar
解压下载的MySQL bundle包),你会看到有12个rpm包
实际安装一个MySQL数据库,我们只需要安装5个rpm包
五、检查依赖,安装依赖
# rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE}(%{ARCH})\n' libaio net-tools perl
# yum -y install epel-release
# yum -y install libaio net-tools
# yum -y install perl
安装perl,主包加依赖共有27个
四、按顺序安装MySQL组件
# rpm -ivh mysql-community-common-5.7.16-1.el7.x86_64.rpm
# rpm -ivh mysql-community-libs-5.7.16-1.el7.x86_64.rpm
# rpm -ivh mysql-community-client-5.7.16-1.el7.x86_64.rpm
# rpm -ivh mysql-community-libs-compat-5.7.16-1.el7.x86_64.rpm
# rpm -ivh mysql-community-server-5.7.16-1.el7.x86_64.rpm
# rpm -qa | grep mysql-community
安装结束后会在Linux中的各种目录生成必要的文件,如下表:
五、自定义数据目录
MySQL的数据目录默认是/var/lib/mysql ,当然你也可以自定义数据存放目录
# mkdir /opt/data/mysql
# vim /etc/my.cnf
datadir=/opt/data/mysql
注意:
socket=/var/lib/mysql/mysql.sock 这个配置没有更改的必要
如果你自定义为 socket=/var/lib/mysql/mysql.sock,那么启动后连接数据库时就会报错
如果更改了默认,那么数据库启动后,需要做一个软链接
# ln -s /opt/data/mysql/mysql.sock /var/lib/mysql/mysql.sock
# chown -R mysql:mysql /opt/data/mysql
六、初始化MySQL
初始化MySQL,可以通过执行 mysqld --initialize 或者 mysqld --initialize-insecure
使用 --initialize 选项,以“安全模式”初始化,会在日志中生成一个随机的root初始密码
使用--initialize-insecure选项,以“非安全模式”初始化,没有root密码生成,你需要及时为MySQL指定一定强度的root密码
方式一、以“安全模式”初始化
# mysqld --initialize --datadir=/opt/data/mysql --user=mysql
# cat /var/log/mysqld.log | grep "temporary password"
# systemctl start mysqld
# systemctl status mysqld
# mysql -u root -p"*simYaJY=7zH"
首次登录,必须更改随机的root初始密码,且密码强度需满足一定要求,才能执行数据库操作
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '设置的新密码';
# mysql -u root -p"MySQL@123"
方式二、以 “非安全模式”初始化
# mysqld --initialize-insecure --datadir=/opt/data/mysql--user=mysql
# systemctl start mysqld
# systemctl status mysqld.service
# mysql -u root --skip-password
投入生产前,你需要立刻为MySQL设置一个root密码
交互式设置
# mysql -u root --skip-password
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '设置的新密码';
非交互式设置
# mysql -u root --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '设置的新密码'"
七、参考
The world's most popular open source database
https://dev.mysql.com
A Quick Guide to Using the MySQL Yum Repository
https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/
Installing MySQL on Linux Using the MySQL Yum Repository
https://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html
CentOS Linux 7离线安装MySQL 5.7.x
https://zhuanlan.zhihu.com/p/34719781