一、项目配置
本篇教程在示例步骤中使用了以下版本的软件。操作时,请您以实际软件版本为准。
- 操作系统:CentOS 7.6 64位
- MySQL:5.7.18
二、基本流程
操作步骤如下:
1.准备编译环境。
2.安装MySQL。
步骤一:准备编译环境。
1. 运行命令cat /etc/redhat-release查看系统版本。
2. 关闭防火墙。
i. 运行systemctl status firewalld命令查看当前防火墙的状态。
- 如果防火墙的状态参数是inactive,则防火墙为关闭状态。
- 如果防火墙的状态参数是active,则防火墙为开启状态。本示例中防火墙为开启状态,因此需要关闭防火墙。
ii. 关闭防火墙。如果防火墙为关闭状态,请忽略此步骤。
- 如果您想临时关闭防火墙,运行命令systemctl stop firewalld。
说明 这只是暂时关闭防火墙,下次重启Linux后,防火墙还会开启。
- 如果您想永久关闭防火墙,运行命令systemctl disable firewalld。
说明 如果您想重新开启防火墙,请参见firewalld官网信息。
3. 关闭SELinux。
i. 运行getenforce命令查看SELinux的当前状态。
- 如果SELinux状态参数是Disabled, 则SELinux为关闭状态。
- 如果SELinux状态参数是Enforcing,则SELinux为开启状态。本示例中SELinux为开启状态,因此需要关闭SELinux。
ii. 关闭SELinux。如果SELinux为关闭状态,请忽略此步骤。
- 如果您想临时关闭SELinux,运行命令setenforce 0。
说明 这只是暂时关闭SELinux,下次重启Linux后,SELinux还会开启。
- 如果您想永久关闭SELinux,运行命令vi /etc/selinux/config编辑SELinux配置文件。回车后,把光标移动到 SELINUX=enforcing 这一行,按i键,将其修改为SELINUX=disabled, 按Esc键,然后输入:wq并回车以保存并关闭SELinux配置文件。
说明 如果您想重新开启SELinux,请参见SELinux的官方文档。
重启系统使设置生效。
步骤二:安装mysql
1.安装依赖
yum install -y libaio-devel
2.下载mysql二进制安装包
官网下载地址 https://downloads.mysql.com/archives/community/
mkdir -p /data/mysql
cd /data/mysql
#下载二进制文件
wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz
#解压二进制文件
tar -zxvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz
3.建立mysql用户和组(如果已有可忽略)
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
4.创建相关目录并修改权限
#二进制安装包路径
mkdir -p /data/mysql/mysql_base
#数据路径
mkdir /data/mysql/mysql_data
#日志路径
mkdir -p /data/mysql/mysql_logs
#二进制路径
mkdir -p /data/mysql/mysql_binlogs
mv mysql-5.7.20-linux-glibc2.12-x86_64 mysql/mysql_base
chown -R mysql.mysql /data/mysql
5.修改环境变量:
#添加环境变量
vim /etc/profile
export PATH=/data/mysql/mysql_base/bin:$PATH
#使环境配置生效
source /etc/profile
6.初始化数据,
6.1 方法一: 初始化数据
初始化管理员的临时密码
/data/mysql/mysql_base/bin/mysqld --defaults-file=/data/mysql/my.cnf --initialize --user=mysql --basedir=/data/mysql/mysql_base --datadir=/data/mysql/mysql_data
查看临时密码
grep -r "password" /data/mysql/mysql_logs/error.log
6.2 方法二 : 初始化数据,初始化管理员的密码为空
\rm -rf /data/mysql/mysql_data/*
[root@db01 ~]# mysqld --initialize-insecure --user=mysql --basedir=/data/mysql/mysql_base --datadir=/data/mysql/mysql_data
新特性重要说明:
5.7开始,MySQL加入了全新的 密码的安全机制:
1.初始化完成后,会生成临时密码(显示到屏幕上,并且会往日志中记一份)
2.密码复杂度:长度:超过12位? 复杂度:字符混乱组合
3.密码过期时间180天
6.3 初始化报错说明
报错原因: Linux系统中缺少libaio-devel 软件包
解决:
yum install -y libaio-devel
报错原因:
在/data/mysql 存在文件
解决:
\rm -rf /data/mysql/mysql_data/*
7 使用systemd管理mysql
7.1第一种方法(推荐)
cp mysql.server /etc/init.d/mysqld
或者cp mysql.server /etc/rc.d/init.d/mysqld
#查看mysqld是否已添加
chkconfig --list
#添加mysqld
chkconfig --add mysqld
#可以通过systemctl启停通常
systemctl status mysqld
7.2 第二种方法
vim /etc/systemd/system/mysqld.service
或者 vim /usr/lib/systemd/system/mysqld.service [一般存放路径]
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/data/mysql/mysql_base/bin/mysqld --defaults-file=/data/mysql/my.cnf
LimitNOFILE = 5000
注意:将原来模式启动mysqld先关闭,然后再用systemd管理。
systemctl start/stop/restart/status mysqld
8. 安装后的简单管理
[root@db01 ~]# mysqladmin -uroot -p password 123
Enter password:
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
5.6版本:
select user,password,host from mysql.user;
5.7 中用户基本信息
select user,authentication_string,host from mysql.user;
desc mysql.user;