两种离线方式部署mysql5.7.X【rpm】【tar.gz】

1,788 阅读6分钟

前言

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_nameValueNote
validate_password_check_user_nameOFF
validate_password_dictionary_file#规则文件保存路径
validate_password_length8#密码长度
validate_password_mixed_case_count1#整个密码中至少要包含大/小写字母的总个数;
validate_password_number_count1#整个密码中至少要包含阿拉伯数字的个数;
validate_password_policyMEDIUM#密码的验证强度等级
validate_password_special_char_count1#密码中特殊字符至少的个数

[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]包部署

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