[toc]

MySQL安装

安装方式

  • yum
  • 源码安装
  • 二进制安装

版本选择

MySQL官网下载入口链接
MySQL5.6:GA 6-12个月,小版本是偶数版
MySQL5.7:GA 6-12个月,小版本是偶数版,mysql5.7.20以上版本(新增MGR高可用功能)

image-20230703201030423

image-20230703201046012

image-20230703201100323

image-20230328202508223

image-20230328202510713

环境准备

主机名 IP 安装方式
db01 10.0.0.51 yum
db02 10.0.0.52 5.6 源码
db03 10.0.0.53 5.6 二进制
db04 10.0.0.54 5.7 二进制

三种方式安装MySQL

MySQLyum安装

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
# 下载MySQL官方源
rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-
7.noarch.rpm

# 查看仓库中支持哪些MySQL安装包
yum list|grep mysql

# 修改yum仓库配置文件 // 关闭mysql80仓库 开启mysql57仓库
vim mysql-community.repo
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-
community/el/7/$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql80-community]
name=MySQL 8.0 Community Server
baseurl=http://repo.mysql.com/yum/mysql-8.0-
community/el/7/$basearch
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

# 安装MySQL Server
yum install -y mysqlserver

# 启动MySQL(自动初始化)
systemctl start mysqld

# MySQL5.7初始密码
cat /var/log/mysqld.log
grep 'password' /var/log/mysqld.log
2023-03-28T04:38:20.263481Z 1 [Note] A temporary password is
generated for root@localhost: aslDSBoyy2#y

# 连接MySQL
mysql -uroot -paslDSBoyy2#y

image-20230328202918140

MySQL源码安装(mysql-5.6.50)

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
# 安装MySQL需要C语言环境
yum install -y gcc glibc gcc-c++ cmake openssl-devel ncurses-devel autoconf

# 解压源码包
tar xf mysql-5.6.50.tar.gz

# 生成(自定义安装 nginx:./configure mysql: cmake || gmake)
cmake . -DCMAKE_INSTALL_PREFIX=/app/mysql-5.6.50 \
-DMYSQL_DATADIR=/app/mysql-5.6.50/data \
-DMYSQL_UNIX_ADDR=/app/mysql-5.6.50/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_SSL=system \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_DEBUG=0

## 解析
#指定安装目录
cmake . -DCMAKE_INSTALL_PREFIX=/app/mysql-5.6.50 \
#数据存放位置
-DMYSQL_DATADIR=/app/mysql-5.6.50/data \
#socket文件存放位置
-DMYSQL_UNIX_ADDR=/app/mysql-5.6.50/tmp/mysql.sock \
#使用utf8字符集
-DDEFAULT_CHARSET=utf8 \
#校验规则
-DDEFAULT_COLLATION=utf8_general_ci \
#使用其他额外的字符集
-DWITH_EXTRA_CHARSETS=all \
#支持的存储引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
#禁用的存储引擎
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
#启用zlib库支持(zib、gzib相关)
-DWITH_ZLIB=bundled \
#启用SSL库支持(安全套接层)
-DWITH_SSL=bundled \
#启用本地数据导入支持
-DENABLED_LOCAL_INFILE=1 \
#编译嵌入式服务器支持
-DWITH_EMBEDDED_SERVER=1 \
# mysql5.6支持了google的c++mock框架了,允许下载,否则会安装报错。
-DENABLE_DOWNLOADS=1 \
#禁用debug(默认为禁用)
-DWITH_DEBUG=0

# 编译&&安装
make && make install

# 创建安装目录的软链接(方便更新)
ln -s /app/mysql-5.6.50 /app/mysql

# 编辑并替换配置文件
cp /app/mysql/support-files/my-default.cnf /etc/my.cnf
vim /etc/my.cnf
[mysqld]

# 拷贝启动脚本文件
cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld

# 创建socket文件存放目录
mkdir /app/mysql/tmp

# 创建MySQL程序用户
useradd mysql -s /sbin/nologin -M

# 进入初始化程序存放目录并初始化
cd /app/mysql/scripts && ./mysql_install_db --user=mysql --basedir=/app/mysql-5.6.50 --datadir=/app/mysql-5.6.50/data

# 授权
chown -R mysql.mysql /app/mysql*

# 启动服务
/etc/init.d/mysqld start

# 添加环境变量
vim /etc/profile.d/mysql.sh
export PATH="/app/mysql/bin:$PATH"

# 允许环境变量
source /etc/profile.d/mysql.sh

image-20230329153405630

MySQL二进制安装(mysql-5.6.50)

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
# 安装依赖
yum install -y autoconf libaio-devel

# 解压mysql二进制包
tar xf mysql-5.6.50-linux-glibc2.12-x86_64.tar.gz

# 创建安装目录并移动MySQL到安装目录
mkdir /app && mv mysql-5.6.50-linux-glibc2.12-x86_64 /app/mysql-5.6.50

# 创建安装目录的软链接(方便更新)
ln -s /app/mysql-5.6.50 /app/mysql

# 修改配置文件参数
vim /etc/my.cnf
[mysqld]
basedir=/app/mysql // 指定程序安装的目录
datadir=/app/mysql/data // 指定程序的数据存放目录

# 拷贝启动脚本
cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld

# 创建mysql用户
useradd mysql -s /sbin/nologin -M

# 进入初始化程序存放目录并初始化
cd /app/mysql/scripts && ./mysql_install_db --user=mysql --basedir=/app/mysql --datadir=/app/mysql/data

# 启动mysql
/etc/init.d/mysqld start

# 修改启动脚本
sed -i 's#/usr/local#/app#g' /etc/init.d/mysqld

# 添加环境变量
vim /etc/profile.d/mysql.sh
export PATH="/app/mysql/bin:$PATH"

# 允许环境变量
source /etc/profile.d/mysql.sh

# 登陆数据库
mysql

管理mysql

使用systemd管理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
# 使用安装目录下的脚本文件启动
/app/mysql-5.6.50/bin/mysqld --basedir=/app/mysql-5.6.50 --datadir=/app/mysql-5.6.50/data --plugin-dir=/app/mysql-5.6.50/lib/plugin --user=mysql --log-error=db02.err --pid-file=/app/mysql-5.6.50/data/db02.pid

# 优化后(使用安装目录下的脚本文件启动)
/app/mysql/bin/mysqld --defaults-file=/etc/my.cnf --user=mysql

# 编辑配置文件(将mysql添加到system管理)
vim /usr/lib/systemd/system/mysqld.service

[Unit]
Description=MySQL Server
# 服务描述
After=network.target,syslog.target
# 在此服务后启动

[Service]
ExecStart=/app/mysql/bin/mysqld --defaults-file=/etc/my.cnf --user=mysql
# 启动脚本

[Install]
WantedBy=multi-user.target

# 开机自启
systemctl enable mysqld

密码相关操作

1
2
3
4
5
6
7
# 更改密码mysql 5.7
mysql> alter user root@'localhost' identified by 'xxxxx';

# 更改密码mysql 5.6
mysqladmin -uroot -p password '123'
mysqladmin -uroot -p password '456'
mysqladmin -uroot -p456 password '789'

安装示例

MySQL源码安装(mysql-5.7.40)

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
92
93
94
95
96
97
98
99
100
# 安装MySQL需要C语言环境
yum install -y gcc glibc gcc-c++ cmake openssl-devel ncurses-devel autoconf

# 解压源码包
tar xf mysql-boost-5.7.40.tar.gz

# 在源码包解压目录生成安装文件(自定义安装 nginx:./configure mysql: cmake || gmake)
cd /root/mysql-5.7.40/ && cmake . -DCMAKE_INSTALL_PREFIX=/app/mysql-5.7.40 \
-DMYSQL_DATADIR=/app/mysql-5.7.40/data \
-DMYSQL_UNIX_ADDR=/app/mysql-5.7.40/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_SSL=system \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_DEBUG=0 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/root/mysql-5.7.40/boost/boost_1_59_0

## 解析
#指定安装目录
cmake . -DCMAKE_INSTALL_PREFIX=/app/mysql-5.6.50 \
#数据存放位置
-DMYSQL_DATADIR=/app/mysql-5.6.50/data \
#socket文件存放位置
-DMYSQL_UNIX_ADDR=/app/mysql-5.6.50/tmp/mysql.sock \
#使用utf8字符集
-DDEFAULT_CHARSET=utf8 \
#校验规则
-DDEFAULT_COLLATION=utf8_general_ci \
#使用其他额外的字符集
-DWITH_EXTRA_CHARSETS=all \
#支持的存储引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
#禁用的存储引擎
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
#启用zlib库支持(zib、gzib相关)
-DWITH_ZLIB=bundled \
#启用SSL库支持(安全套接层)
-DWITH_SSL=bundled \
#启用本地数据导入支持
-DENABLED_LOCAL_INFILE=1 \
#编译嵌入式服务器支持
-DWITH_EMBEDDED_SERVER=1 \
# mysql5.6支持了google的c++mock框架了,允许下载,否则会安装报错。
-DENABLE_DOWNLOADS=1 \
#禁用debug(默认为禁用)
-DWITH_DEBUG=0
#启用下载boost(已下载自动忽略)
-DDOWNLOAD_BOOST=1 \
# 指定本地已有boost目录
-DWITH_BOOST=/root/mysql-5.7.40/boost/boost_1_59_0

# 编译&&安装
make && make install

# 创建安装目录的软链接(方便更新)
ln -s /app/mysql-5.7.40 /app/mysql

# 编辑并替换配置文件
cp /app/mysql/support-files/my-default.cnf /etc/my.cnf
vim /etc/my.cnf
[mysqld]

# 拷贝启动脚本文件
cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld

# 创建socket文件存放目录
mkdir /app/mysql/tmp

# 创建MySQL程序用户
useradd mysql -s /sbin/nologin -M

# 授权
chown -R mysql.mysql /app/mysql*

# 进入初始化程序存放目录并初始化
cd /app/mysql/bin && ./mysqld --initialize --user=mysql --basedir=/app/mysql --datadir=/app/mysql/data

# 启动服务
/etc/init.d/mysqld start

# 添加环境变量
vim /etc/profile.d/mysql.sh
export PATH="/app/mysql/bin:$PATH"

# 允许环境变量
source /etc/profile.d/mysql.sh

# 登陆数据库
mysql -uroot -p'Bcm+FH51Ej3V'

image-20230329153405630

MySQL二进制安装(mysql-5.7.40)

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
# 安装依赖
yum install -y autoconf libaio-devel

# 解压mysql二进制包
tar xf mysql-5.7.40-linux-glibc2.12-x86_64.tar
tar xf mysql-5.7.40-linux-glibc2.12-x86_64.tar.gz

# 创建安装目录并移动MySQL到安装目录
mkdir /app && mv mysql-5.7.40-linux-glibc2.12-x86_64 /app/mysql-5.7.40

# 创建安装目录的软链接(方便更新)
ln -s /app/mysql-5.7.40 /app/mysql

# 修改配置文件参数
vim /etc/my.cnf
[mysqld]
basedir=/app/mysql // 指定程序安装的目录
datadir=/app/mysql/data // 指定程序的数据存放目录

# 拷贝启动脚本
cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld

# 创建mysql用户
useradd mysql -s /sbin/nologin -M

# 初始化
./mysqld --initialize-insecure --user=mysql --basedir=/app/mysql --datadir=/app/mysql/data

# 启动mysql
/etc/init.d/mysqld start

# 修改启动脚本
sed -i 's#/usr/local#/app#g' /etc/init.d/mysqld

# 添加环境变量
vim /etc/profile.d/mysql.sh
export PATH="/app/mysql/bin:$PATH"

# 查看环境变量
echo $PATH

# 允许环境变量
source /etc/profile.d/mysql.sh

# 登陆数据库
mysql -uroot -pHelp9090