在Linux上安装MySQL服务

安装MySQL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# 检查是否存在mariadb数据库
rpm -qa | grep mariadb
# 存在,删除
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
# 检查是否存在mysql数据库
rpm -qa | grep mysql
# 存在,删除
rpm -e --nodeps XXX
# 将/usr/lib64/libLLVM-7.so也一并删除
rm -rf /usr/lib64/libLLVM-7.so
# 检查是否删除成功
rpm -qa | grep mysql
# 查询残余文件夹
whereis mysql

#解压
tar -zxvf mysql-8.0.33-el7-x86_64.tar.gz
#移动到/usr/local/mysql
mv mysql-8.0.33-el7-x86_64 /usr/local/mysql
# 创建目录
mkdir /usr/local/mysql/{data,log,run}
# 执行命令
groupadd mysql
# 创建用户组信息
useradd -g mysql mysql
# 授权用户
chown -R mysql:mysql /usr/local/mysql
# 创建错误信息日志
touch /usr/local/mysql/log/mysqld_safe_error.log
# 授权给mysql用户
chown -R mysql:mysql /usr/local/mysql/log/mysqld_safe_error.log

# 修改配置文件
vim /etc/my.cnf
# 配置文件见下方

# 进入安装文件夹
cd /usr/local/mysql/bin
# 初始化mysql
./mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/ --initialize
# mysql8.0以后初始化命令
./mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/ --initialize --lower-case-table-names=1
#执行完后会获得初始密码:如wBgq?t&k>10J

# 添加mysqld服务到系统
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
# 启动mysql服务
service mysqld start
# 其他相关命令--------
# 停止mysql服务
service mysqld stop
# 重启mysql服务
service mysqld restart
# 查看mysql服务是否启动
service mysqld status
# -------------------

# 进入MySQL安装目录
cd /usr/local/mysql/
# 登录MySQL
./bin/mysql -u root -p
# 密码是前面记录的初始密码
# 如果前面没有记下,可以使用下面命令查询mysql初始密码
grep -e 'temporary' /usr/local/mysql/log/alert.log
# 设置密码为123456(根据自己的想法设置)
alter user root@localhost identified by '123456';
# 其他相关操作---------------------------
# 设置密码验证安全级别
set global validate_password_policy=LOW;
# 设置密码验证最小长度
set global validate_password_length=6;
# 查看密码验证规则
SHOW VARIABLES LIKE 'validate_password%';
# --------------------------------------

# 设置远程连接
# 选择 mysql 库
use mysql;
# 将 root 用户的可访问主机改为 %,即任何主机
update user set user.Host='%' where user.User='root';
# 执行生效指令
flush privileges;
# 退出登录
exit;

# 如有需要,关闭防火墙对应端口-------------------------------
# 防火墙放行 3306 tcp 端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 防火墙重新加载
firewall-cmd --reload
# -------------------------------------------------------

my.cnf 配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[mysql] 
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
# 开启命令补全
no-auto-rehash
port = 3306
socket=/usr/local/mysql/run/mysql.sock

[mysqld]
skip-name-resolve
#设置3306端口
port = 3306
socket=/usr/local/mysql/run/mysql.sock
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
# 允许最大连接数
max_connections=1000
# 服务端使用的字符集
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
max_allowed_packet=16M
# 如果设置为0,表名将按指定的方式存储,并且比较区分大小写。如果设置为1,表名将以小写形式存储在磁盘上,比较不区分大小写。
# 如果设置为2,则表名按给定值存储,但以小写进行比较。此选项也适用于数据库名称和表别名。
lower_case_table_names=1

[mysqld_safe]
# 存放 MySQL 后台程序 pid 的文件位置
pid-file=/usr/local/mysql/mysqld.pid
# 启动错误日志
log-error=/usr/local/mysql/log/mysqld_safe_error.log