CentOS 7 编译安装Mysql 5.7


1.安装所需依赖包

1
yum -y install gcc gcc-c++ ncurses ncurses-devel cmake bison bison-devel

2.下载源码包

可以去官网下载,也可以从百度网盘 ,密码:7u29,下载。 注意: mysql 5.7 需要boost 1.59 及以上版本,可以在下载MySQL源码包时选择以包含boost版本。

3.新建mysql用户及用户组

1
2
groupadd -r mysql
useradd -r -g mysql mysql

4.新建MySQL数据库数据文件目录

1
2
3
mkdir -p /home/mysql/data
mkdir -p /home/mysql/logs
mkdir -p /home/mysql/temp

5.预编译

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cmake  \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/home/mysql/data \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DWITH_BOOST=./bootst/boost_1_59_0 \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DENABLE_DTRACE=0 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EMBEDDED_SERVER=1

6.编译安装

1
2
3
make
make install
make clean

7.设置开机自启动

1
2
3
4
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on

8.修改MySQL的可执行目录

1
2
chown -Rf mysql:mysql /usr/local/mysql
chown -Rf mysql:mysql /home/mysql

9.修改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
vi /etc/my.cnf

#修改以下内容
[mysqld]
character-set-server = utf8
collation-server = utf8_general_ci

skip-external-locking
skip-name-resolve

user = mysql
port = 3306

basedir = /usr/local/mysql
datadir = /home/mysql/data
tmpdir = /home/mysql/temp
# server_id = .....
socket = /usr/local/mysql/mysql.sock
log-error = /home/mysql/logs/mysql_error.log
pid-file = /home/mysql/data/mysql.pid

open_files_limit = 10240

back_log = 600
max_connections=500
max_connect_errors = 6000
wait_timeout=605800

#open_tables = 600
#table_cache = 650
#opened_tables = 630

max_allowed_packet = 32M

sort_buffer_size = 4M
join_buffer_size = 4M
thread_cache_size = 300
query_cache_type = 1
query_cache_size = 256M
query_cache_limit = 2M
query_cache_min_res_unit = 16k

tmp_table_size = 256M
max_heap_table_size = 256M

key_buffer_size = 256M
read_buffer_size = 1M
read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 64M

lower_case_table_names=1

default-storage-engine = INNODB

innodb_buffer_pool_size = 1G
innodb_log_buffer_size = 32M
innodb_log_file_size = 128M
innodb_flush_method = O_DIRECT

#####################
long_query_time= 2
slow-query-log = on
slow-query-log-file = /home/mysql/logs/mysql-slow.log

[mysqldump]
quick
max_allowed_packet = 32M

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

10.添加环境变量

1
2
3
4
5
6
7
vi /etc/profile

#末尾添加以下内容
#mysql env
export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib

source /etc/profile

11.初始化数据库

1
mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/home/mysql/data

12.启动数据库

1
2
systemctl start mysqld
systemctl status mysqld

13.设置MySQL用户root密码

1
2
3
4
5
#首次登陆时输入以下命令后敲回车可以直接进入数据库
mysql -u root -p
#输入以下命令修改root用户密码
ALTER USER 'root'@‘localhost’ IDENTIFIED BY 'xxxxxxxx';
FLUSH PRIVILEGES;

注意: MySQL 5.7版本增加了很多安全性的更新,如果密码等级设置为MEDIUM级别,那么用户密码需要:密码的最小长度默认为8,至少包含一个大写字母、一个小写字母、一个数字和一个特殊字符。

14.添加一个可以远程访问的普通用户

1
2
create USER 'test'@'%' IDENTIFIED BY '########';
FLUSH PRIVILEGES;

注意: 添加了数据库用户后还是无法远程访问的话,需要检查CentOS 7防火墙是否关闭:

1
2
check firewalld.service
systemctl stop firewalld.service

参考文档: 在CentOS7上编译安装MySQL 5.7.14步骤详解 CentOS 7 编译安装mysql 5.7 MySQL5.7修改默认root密码 CentOS7 防火墙关闭