前言
5.7.x版本的部署方式跟8.x版本是有区别的,本文章提供的教程为5.7.X版本的详细部署方式
环境
- Linux版本
[root@localhost tmp]# uname -a
Linux localhost 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
我这里使用的版本为Centos7.x
- Mysql版本:
- RPM包:
mysql-community-client-5.7.27-1.el7.x86_64.rpm mysql-community-common-5.7.27-1.el7.x86_64.rpm mysql-community-libs-5.7.27-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.27-1.el7.x86_64.rpm mysql-community-server-5.7.27-1.el7.x86_64.rpm-
tar包:
mysql-5.7.29-el7-x86_64.tar
mysql软件下载
1、选择 Looking for previous GA versions?界面默认是mysql8.0版本的我们需要手动切换到5.x版本下载界面
2、选择下载合适自己的版本
RPM包部署
1、卸载系统默认安装的Mariadb
[root@localhost tmp]# rpm -qa | grep -i mariadb
mariadb-libs-5.5.60-1.el7_5.x86_64
[root@localhost tmp]# rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
[root@localhost tmp]# rpm -qa | grep -i mariadb
2、依次执行如下命令,安装Mysql服务
[root@localhost tmp]# chmod 755 mysql* #赋予mysql_rpm包执行权
[root@localhost tmp]# yum -y install perl net-tools #安装mysql-server依赖
[root@localhost tmp]# rpm -ivh mysql-community-common-5.7.27-1.el7.x86_64.rpm
[root@localhost tmp]# rpm -ivh mysql-community-libs-5.7.27-1.el7.x86_64.rpm
[root@localhost tmp]# rpm -ivh mysql-community-libs-compat-5.7.27-1.el7.x86_64.rpm
[root@localhost tmp]# rpm -ivh mysql-community-client-5.7.27-1.el7.x86_64.rpm
[root@localhost tmp]# rpm -ivh mysql-community-server-5.7.27-1.el7.x86_64.rpm
3、启动并查看mysql服务是否正常运行
[root@localhost tmp]# service mysqld start
Redirecting to /bin/systemctl start mysqld.service
[root@localhost tmp]# service mysqld status
4、获取mysql数据库初始密码
[root@localhost tmp]# grep 'temporary password' /var/log/mysqld.log
2020-01-20T08:32:50.845125Z 1 [Note] A temporary password is generated for root@localhost: (*F-hSf.4p0C
5、修改Mysql数据库的密码规则(这一步骤选择性操作,我懒,我这里演示使用弱密码)
| Variable_name | Value | Note |
|---|---|---|
| validate_password_check_user_name | OFF | |
| validate_password_dictionary_file | #规则文件保存路径 | |
| validate_password_length | 8 | #密码长度 |
| validate_password_mixed_case_count | 1 | #整个密码中至少要包含大/小写字母的总个数; |
| validate_password_number_count | 1 | #整个密码中至少要包含阿拉伯数字的个数; |
| validate_password_policy | MEDIUM | #密码的验证强度等级 |
| validate_password_special_char_count | 1 | #密码中特殊字符至少的个数 |
[root@localhost tmp]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.27
.......................................
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.01 sec)
mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.01 sec)
6、使用初始密码登录修改密码以及配置远程登陆权限
[root@localhost tmp]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.27
.......................................
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; #修改密码
Query OK, 0 rows affected (0.00 sec)
mysql> grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option; #添加远程登录权限
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges; #重新刷权限表到内存
Query OK, 0 rows affected (0.00 sec)
7、防火墙策略
[root@localhost tmp]# firewall-cmd --zone=public --add-port=3306/tcp --permanent #开放3306端口
success
[root@localhost tmp]# firewall-cmd --reload #刷新防火墙规则
success
8、测试
使用Navicat数据库连接工具测试
9、有始有终,卸载mysql
[root@localhost tmp]# service mysqld stop #停止mysql服务
[root@localhost tmp]# rpm -qa|grep -i mysql #查询所有与mysql相关的rpm包
mysql-community-libs-5.7.27-1.el7.x86_64
mysql-community-client-5.7.27-1.el7.x86_64
mysql-community-common-5.7.27-1.el7.x86_64
mysql-community-libs-compat-5.7.27-1.el7.x86_64
mysql-community-server-5.7.27-1.el7.x86_64
[root@localhost tmp]# rpm -ev mysql-community-server-5.7.27-1.el7.x86_64
[root@localhost tmp]# rpm -ev mysql-community-libs-compat-5.7.27-1.el7.x86_64 --nodeps #报依赖错误的就加 --nodeps参数
[root@localhost tmp]# rpm -ev mysql-community-common-5.7.27-1.el7.x86_64 --nodeps
[root@localhost tmp]# rpm -ev mysql-community-client-5.7.27-1.el7.x86_64
[root@localhost tmp]# rpm -ev mysql-community-libs-5.7.27-1.el7.x86_64
[root@localhost tmp]# find / -name mysql #查询到所有之前关于mysql的目录都删除
/etc/selinux/targeted/active/modules/100/mysql
/var/lib/mysql
/var/lib/mysql/mysql
/usr/share/mysql
[root@localhost tmp]# rm -rf /etc/selinux/targeted/active/modules/100/mysql &&\
rm -rf /var/lib/mysql &&\
rm -rf /var/lib/mysql/mysql &&\
rm -rf /usr/share/mysql &&\
rm -rf /etc/my.cnf
[root@localhost tmp]# find / -name mysql #查询是否还留存相关mysql的文件夹
[root@localhost tmp]# rpm -qa|grep -i mysql #查询是否还留存mysql包
[tar]/[tar.gz]包部署
- 感谢若泽数据@J哥的技术文档
1、解压mysql的tar包并创建数据目录
[root@localhost software]# tar -zxvf mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz -C /usr/local
//设置软连接
[root@localhost ~]# cd /usr/local/
[root@xxdata003 local]# ln -s mysql-5.7.11-linux-glibc2.5-x86_64/ mysql
[root@localhost local]# cd mysql
[root@localhost mysql]# mkdir -p arch data tmp
[root@xxdata003 mysql]# ll
总用量 36
drwxr-xr-x 2 root root 6 5月 27 15:39 arch
drwxr-xr-x 2 7161 wheel 4096 2月 2 2016 bin
-rw-r--r-- 1 7161 wheel 17987 2月 2 2016 COPYING
drwxr-xr-x 2 root root 6 5月 27 15:39 data
drwxr-xr-x 2 7161 wheel 77 2月 2 2016 docs
drwxr-xr-x 3 7161 wheel 4096 2月 2 2016 include
drwxr-xr-x 5 7161 wheel 259 2月 2 2016 lib
drwxr-xr-x 4 7161 wheel 30 2月 2 2016 man
-rw-r--r-- 1 7161 wheel 2478 2月 2 2016 README
drwxr-xr-x 28 7161 wheel 4096 2月 2 2016 share
drwxr-xr-x 2 7161 wheel 112 2月 2 2016 support-files
drwxr-xr-x 2 root root 6 5月 27 15:39 tmp
2、创建my.cnf文件
[root@localhost mysql]# vim /etc/my.cnf #没有vim的用vi(区别就是vim是彩色,vi黑白)
并添加如下内容:
[client]
port = 3306
socket = /usr/local/mysql/data/mysql.sock
default-character-set=utf8mb4
[mysqld]
port = 3306
socket = /usr/local/mysql/data/mysql.sock
skip-slave-start
skip-external-locking
key_buffer_size = 256M
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 4M
query_cache_size= 32M
max_allowed_packet = 16M
myisam_sort_buffer_size=128M
tmp_table_size=32M
table_open_cache = 512
thread_cache_size = 8
wait_timeout = 86400
interactive_timeout = 86400
max_connections = 600
# Try number of CPU's*2 for thread_concurrency
#thread_concurrency = 32
#isolation level and default engine
default-storage-engine = INNODB
transaction-isolation = READ-COMMITTED
server-id = 1739
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
pid-file = /usr/local/mysql/data/hostname.pid
#open performance schema
log-warnings
sysdate-is-now
binlog_format = ROW
log_bin_trust_function_creators=1
log-error = /usr/local/mysql/data/hostname.err
log-bin = /usr/local/mysql/arch/mysql-bin
expire_logs_days = 7
innodb_write_io_threads=16
relay-log = /usr/local/mysql/relay_log/relay-log
relay-log-index = /usr/local/mysql/relay_log/relay-log.index
relay_log_info_file= /usr/local/mysql/relay_log/relay-log.info
log_slave_updates=1
gtid_mode=OFF
enforce_gtid_consistency=OFF
# slave
slave-parallel-type=LOGICAL_CLOCK
slave-parallel-workers=4
master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log_recovery=ON
#other logs
#general_log =1
#general_log_file = /usr/local/mysql/data/general_log.err
#slow_query_log=1
#slow_query_log_file=/usr/local/mysql/data/slow_log.err
#for replication slave
sync_binlog = 500
#for innodb options
innodb_data_home_dir = /usr/local/mysql/data/
innodb_data_file_path = ibdata1:1G;ibdata2:1G:autoextend
innodb_log_group_home_dir = /usr/local/mysql/arch
innodb_log_files_in_group = 4
innodb_log_file_size = 1G
innodb_log_buffer_size = 200M
#根据生产需要,调整pool size
innodb_buffer_pool_size = 2G
#innodb_additional_mem_pool_size = 50M #deprecated in 5.6
tmpdir = /usr/local/mysql/tmp
innodb_lock_wait_timeout = 1000
#innodb_thread_concurrency = 0
innodb_flush_log_at_trx_commit = 2
innodb_locks_unsafe_for_binlog=1
#innodb io features: add for mysql5.5.8
performance_schema
innodb_read_io_threads=4
innodb-write-io-threads=4
innodb-io-capacity=200
#purge threads change default(0) to 1 for purge
innodb_purge_threads=1
innodb_use_native_aio=on
#case-sensitive file names and separate tablespace
innodb_file_per_table = 1
lower_case_table_names=1
[mysqldump]
quick
max_allowed_packet = 128M
[mysql]
no-auto-rehash
default-character-set=utf8mb4
[mysqlhotcopy]
interactive-timeout
[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M
3、创建用户组及用户
[root@localhost local]# groupadd -g 101 dba
[root@localhost local]# useradd -u 514 -g dba -G root -d /usr/local/mysql mysql
[root@localhost local]# id mysql
uid=514(mysql) gid=101(dba) 组=101(dba),0(root)
#如果存在用户mysql,请执行以下usermod命令
[root@localhost local]# usermod -u 514 -g dba -G root -d /usr/local/mysql mysql
# Copy环境变量配置文件至mysql用户的home目录中,否则就会出现 bash-4.2$ 这种情况
[root@localhost local]#cp /etc/skel/.* /usr/local/mysql
4、配置环境变量
[root@localhost mysql]# vim .bashrc
添加如下内容:
# User specific environment and startup programs
export MYSQL_BASE=/usr/local/mysql
export PATH=${MYSQL_BASE}/bin:$PATH
unset USERNAME
#stty erase ^H
set umask to 022
umask 022
PS1=`uname -n`":"'$USER'":"'$PWD'":>"; export PS1
## end
[root@localhost local]# source .bashrc
5、赋权限和用户组
[root@localhost local]# chown mysql:dba /etc/my.cnf
[root@localhost local]# chmod 640 /etc/my.cnf
[root@localhost local]# chown -R mysql:dba /usr/local/mysql/
[root@localhost local]# chmod -R 755 /usr/local/mysql/
6、安装libaio依赖及初始化mysql
[root@localhost mysql]# yum -y install libaio
[root@localhost mysql]# su - mysql
[mysql@localhost ~]$ bin/mysqld --defaults-file=/etc/my.cnf --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --initialize
7、查看临时密码
[mysql@localhost ~]$ cat data/hostname.err |grep password
2020-01-20T09:56:11.545123Z 1 [Note] A temporary password is generated for root@localhost: qrLi9rPH/y3G
8、启动、登录及修改用户密码
//启动服务
[localhost:mysql:/usr/local/mysql]# nohup /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf 2>&1 &
//root用户操作把MySQL加入到系统服务中
[root@localhost ~]# cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysql
[root@localhost ~]# chmod +x /etc/rc.d/init.d/mysql
localhost:mysql:/usr/local/mysql:>service mysql status #查看状态
localhost:mysql:/usr/local/mysql:>mysql -uroot -p'qrLi9rPH/y3G' #登录数据库
mysql> alter user root@localhost identified by '123456'; #修改密码
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' ; #添加远程登录权限
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> FLUSH PRIVILEGES; #刷新内存表权限
9、重启mysql服务、开放相应端口、用连接工具测试
localhost:mysqladmin:/usr/local/mysql:> service mysql restart
Shutting down MySQL.. SUCCESS!
Starting MySQL.. SUCCESS!
[root@localhost tmp]# firewall-cmd --zone=public --add-port=3306/tcp --permanent #开放3306端口
success
[root@localhost tmp]# firewall-cmd --reload #刷新防火墙规则
success
10、设置mysql开机自启动
[root@xinxingdata ~]# chkconfig --add mysql
[root@xinxingdata ~]# chkconfig mysql on
[root@xinxingdata ~]# chkconfig --level 2345 mysql on
[root@xinxingdata ~]# chkconfig --list