---
url: https://chenlj.top/md/install/mysql/mysql.md
---
# mysql5.7 普通安装

## 一、安装前检查

```shell
# 检查是否有安装mariadb
rpm -qa|grep  mariadb
# 卸载上面查到的mariadb
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
```

## 二、下载

```shell
# 下载mysql5.7.33版本、清华站只保留最新几个版本
wget https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-5.7/mysql-5.7.31-el7-x86_64.tar.gz
```

## 三、安装

```shell
# 解压
tar -zxvf mysql-5.7.31-el7-x86_64.tar.gz -C /usr/local/
# 修改文件夹名称
mv /usr/local/mysql-5.7.31-el7-x86_64/ /usr/local/mysql
```

## 四、配置、启动

### 1、创建 mysql 用户

```shell
# -s 禁止登陆 -d 登陆默认目录
groupadd mysql && useradd -r -g mysql -s /bin/false mysql
```

### 2、my.cnf 配置(可选)

```shell
cat >>/etc/my.cnf <<EOF
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
socket=/var/lib/mysql/mysql.sock
[mysqld]
#skip-name-resolve
#设置3306端口
port = 3306
socket=/var/lib/mysql/mysql.sock
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#lower_case_table_name=1
max_allowed_packet=16M
EOF
```

### 3、初始化

```shell
# 新建data目录
mkdir /usr/local/mysql/data
chown -R mysql.mysql /usr/local/mysql
# 初始化
/usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize
# 记住生成的初始化密码

# 给数据库加密 开启ssl 可以不开启
/usr/local/mysql/bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data
```

> **如果安装 MySQL57 时没有运行过 mysql\_ssl\_rsa\_setup，那么如何开启 SSL 呢？**
>
> ```shell
> # 1)、关闭MySQL服务
> service mysqld stop
> # 2)、运行mysql_ssl_rsa_setup 命令
> /usr/local/mysql/bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data
> # 3)、到data_dir目录下修改.pem文件的所属权限用户为mysql
> chown -R mysql.mysql /usr/local/mysql/data/*.pem
> # 4)、启动MySQL服务
> service mysqld start
> ```

### 4、启动 mysql

```shell
# 复制启动命令
cp  /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# 启动命令
service mysqld start
# 登陆
/usr/local/mysql/bin/mysql -u root -p
# 输入前面的临时密码

```

### 5、修改 root 密码

```sql
# 执行sql修改密码
set password=password('123456');
```

### 6、新建用户，禁止 root 远程登录

```sql
# 设置root只能本地登录
use mysql;
select user,host,authentication_string from user;
update user set host = "localhost" where user = "root" and host = "%";
flush privileges;
select user,host,authentication_string from user;

#添加远程登录用户
CREATE USER 'chenlj'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'chenlj'@'%';
flush privileges;
```

## 五、配置环境变量（全局可以使用 mysql 命令）

```shell
cat >>/etc/profile.d/mysql.sh <<EOF
export PATH=\$PATH:/usr/local/mysql/bin
EOF
source /etc/profile
```

## 六、配置远程访问

### 1、开启防火墙端口

```shell
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
```

2、修改 mysql 用户权限

```sql
grant all privileges on *.* to root@'%' identified by '123456';
flush privileges;
```

### 七、设置开机自启

```shell
chkconfig --add mysqld
chkconfig mysqld on
```
