Linux系统部署MySQL5.7

 # 写在前言

致敬那些我曾经踩过的坑,希望对小伙伴们可以有所帮助,以下是对MySQL5.7版本的一个部署介绍

目录

环境介绍

一、安装前的准备

1.检查是否有安装过MariaDB与MySQL

1.2卸载

1.3检查依赖

1.3.1 检查是否安装libaio

1.3.2 检查是否安装numactl

二、安装MySQL

1. 下载资源包

1.1 官方资源下载

1.2 wget方式

2.解压

3.重命名

4.拷贝

5.配置参数文件

6.创建存储数据文件

7.设置用户组并赋权

8.配置环境变量

9.初始化MySQL

10.启动MySQL

11.设置软连接,并重启MySQL

12.登录并更改密码

13.开放远程连接

14.连接工具测试连接MySQL

15.MySQL启动和停止

三、设置开机自启动(可选)

四、后记


环境介绍

系统:CentOS7

数据库:Mysql5.7.28 

本文使用的是当前最新5.7.28版本,如果需要安装的版本比5.7.28高或者低,只要是5.7.*版本,那就可以按照本文说明安装,基本不会有任何问题。

一、安装前的准备

1.检查是否有安装过MariaDB与MySQL

rpm -qa|grep mariadb
rpm -qa|grep mysql

1.2卸载

rpm -e --nodeps 文件名

# 1.先检查mysql关键字的文件
   whereis mysql
# 2. 根据返回的文件进行删除对应包含Mysql的文件【rm -rf .../mysql】
# 3. find / -name mysql
# 根据返回的文件名删除最后一个文件名包含mysql的【rm -rf ..../mysql】

1.3检查依赖

1.3.1 检查是否安装libaio

rpm -qa|grep libaio

 如果没有安装则执行

yum -y install libaio //安装libaio 

1.3.2 检查是否安装numactl

rpm -qa|grep numactl

如果没有安装则执行

yum -y install numactl //安装numactl 

二、安装MySQL

1. 下载资源包

        下载方式有两种一种通过wget直接在Linux服务器执行相应命令下载对应版本,或者直接通过官网下载对应的安装包到本地然后上传至服务器进行解压

1.1 官方资源下载

MySQL官网下载地址:MySQL :: Download MySQL Community Server

        由于本文介绍并非最新版本安装,需要找历史版本,上图为本文安装的版本,如果安装的非5.7.28可以自行找到对应的版本进行下载上传到服务器。

1.2 wget方式

# wget 命令下载安装包仅供参考不是本文介绍重点下载方式
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.30-el7-x86_64.tar

2.解压

注:1.本文安装包上传到了 /opt/software/目录下

        2.本文使用的是root权限的方式进行的操作  如果使用非root权限有些命令可能需要需要使用sudo XXXXX

进入安装包目录

cd /opt/software

解压安装包

tar -zxvf  mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz

3.重命名

mv mysql-5.7.28-linux-glibc2.12-x86_64 mysql

4.拷贝

注:由于MySQL 许多配置信息默认使用目录为/usr/local/mysql  所以将解压后的重命名文件拷贝一份到/usr/local/目录

# 在/opt/software/ 目录下执行[需要切换成自己目录,如果上传就是在/usr/local 则不需要拷贝,直接将解压后的文件夹修改为 mysql即可 mv mysql-5.7.28-linux-glibc2.12-x86_64 mysql ]
cp -a mysql /usr/local/mysql

5.配置参数文件

注:配置文件在/etc 目录下,如果已经存在my.cnf 可先删除

rm -rf /etc/my.cnf

在执行创建文件命令

vim /etc/my.cnf

配置文件修改为以下内容,也可以根据自己需要设置参数。

[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

# 每台机器上的MySQL用server-id来做区分,所以做集群或主从时,server-id必须不一样。
server-id = 104
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有3种方式
binlog_format = ROW
log_bin_trust_function_creators=1
log-error = /usr/local/mysql/data/hostname.err
log-bin = /usr/local/mysql/log-bin/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

6.创建存储数据文件

在mysql文件夹中创建data   log-bin  relay_log  tmp  arch文件夹

mkdir data   log-bin  relay_log  tmp  arch

7.设置用户组并赋权

创建用户组

创建用户组前先检查是否存在如果存在测先删除

id mysql # 如果返回存在该用户组 则先进行删除
userdel mysql
# 删除后在进行创建
groupadd mysql

创建用户
-r:创建系统用户
-g:指定用户组

useradd -r -g mysql mysql

更改属主和数组

chown -R mysql:mysql /usr/local/mysql/

更改权限

chmod -R 755 /usr/local/mysql/

8.配置环境变量

注: 为啥要把环境变量放在此处就是为了让小伙伴们少踩坑,如果5.7.*没有配置环境变量初始化后启动成功后如果执行如下命令则会提示“-bash: mysql command not found”

mysql -uroot -p

不推荐直接在/etc/profile 文件中添加配置

/etc/profile中存放着全局环境变量信息。

环境变量在命令的角度理解就是:如果将/usr/local/mysql/bin/路径加入profile中,就相当于告诉系统可以来这个目录(/usr/local/mysql/bin/)下找命令。

例如:当我输入mysql命令时,系统就去遍历profile文件里面写的目录,分别去每个目录下找mysql这个命令,如果找不到就返回"-bash: mysql command not found"。

打开

vim /etc/profile.d/my_env.sh

加入

# mysql env
export MYSQL_HOME=/usr/local/mysql 
export PATH=$PATH:$MYSQL_HOME/bin

保存退出后输入 source /etc/profile 生效

查看已存在的环境变量目录

echo $PATH

9.初始化MySQL

进入MySQL的bin目录

cd /usr/local/mysql/bin

初始化

./mysqld --defaults-file=/etc/my.cnf --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --initialize

初始化完成后会打印一个随机密码,后面会用到,由于初始化时引用到了my.cnf 配置文件,初始化时候的初始密码并未打印显示需要去data目录下的查看

cd /usr/local/mysql/data
cat hostname.err | grep password

10.启动MySQL

/usr/local/mysql/support-files/mysql.server start

11.设置软连接,并重启MySQL

ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
ln -s /usr/local/mysql/mysql.sock /var/mysql.sock
service mysql restart

12.登录并更改密码

[root@localhost bin]# mysql -uroot -p
Enter password: 输入初始化随机密码

两种改密方式二选一

alter user 'root'@'localhost' identified by '123456';
set password for root@localhost = '123456';

13.开放远程连接

mysql>use mysql;
msyql>update user set user.Host='%' where user.User='root';
mysql>flush privileges;    //刷新权限

14.连接工具测试连接MySQL

如果服务器本地可以连接,但是连接工具远程连接不进去,则需要检查一下防火墙是否放行3306端口,也可以暂时先关闭防火墙后重试。

关闭防火墙

systemctl stop firewalld

15.MySQL启动和停止

两种方式选其一

启动

service mysql start
systemctl start mysql

停止

service mysql stop
systemctl stop mysql

重启

service mysql restart
systemctl restart mysql

查看状态

service mysql status
systemctl status mysql

三、设置开机自启动(可选)

将服务文件拷贝到 /etc/init.d下,并重命名为mysqld

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

赋予可执行权限

chmod +x /etc/init.d/mysqld

添加服务

chkconfig --add mysqld

显示服务列表

chkconfig --list

注:如果看到mysqld的服务,并且3,4,5都是on的话则成功,如果是off,则执行

chkconfig --level 345 mysqld on

重启系统

reboot

重启后查看mysql是否开机自启动

ps -ef|grep mysql

四、后记

        由于本人在安装时候参考了下文博主的博文,安装的版本以及操作也有些不同,导致我在启动MySQL后查看是否开启bin-log日志时开关是OFF,至于问题超出了楼主的能力范围,所以楼主也不知道是为什么,就未对my.cnf 文件进行权限的赋值,如果按照的是楼主的方式初始化就不要对my.cnf进行赋权。

参考博文链接     https://blog.csdn.net/qq_36408717/article/details/126705287icon-default.png?t=N7T8https://blog.csdn.net/qq_36408717/article/details/126705287

查看日志状态

# 登录MySQL后,输入show variables like '%log_bin%';查看到binlog日志为OFF关闭状态;
show variables like '%log_bin%';

成功开启日志

  • 34
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值