Centos7详细安装部署Mysql8.0两种方案
- 一、环境检查:卸载mysql数据库
- 1.1 查看mysql的安装情况
- 1.2 依次删除所有相关的包
- 1.3 查找关于mysql的目录
- 1.4 依次删除这些文件夹
- 1.5 找出并删除mysql的配置文件
- 二 、方案一:使用 MySQL 官方 Yum 源
- 2.1 Mysql 8.0下载
- 2.1.1 官方yum源下载
- 2.1.2 直接选择对应版本下载:
- 2.1.3 下载rpm包
- 2.2 配置my.cnf文件
- 2.3 启动mysql服务并查看状态
- 2.4 查看默认密码并登录修改密码
- 2.5 配置开机启动启动(可选)
- 2.6 防火墙放行3306端口
- 2.7 安装后检查mysql版本
- 三、方案二:通用二进制安装
- 3.1 清理一下环境
- 3.2 创建用户和组
- 3.3 创建相关目录(软件目录,数据目录)
- 3.3.1 软件目录
- 3.3.2 数据目录
- 3.4 设置权限
- 3.5 上传并解压软件到数据目录
- 3.6 建立软连接
- 3.7 设置my.cnf
- 3.8 把bin目录设置到环境变量中
- 3.9 生效配置
- 3.10 启动MySQL
- 3.10.1 设置开机启动
- 3.10.2 启动mysql
- 3.10.2查看是否启动
- 3.11 查看版本
- 3.12 初始化系统库表(系统数据,数据库要启动,必须依赖一些表,系统表)
- 3.13 初始化数据,初始化管理员的临时密码
- 3.14 在登陆前修改密码(使用mysqld –initialize 初始化的数据)
- 3.15 配置防火墙:
- 3.15.1 修改MySQL默认端口
- 3.15.2 防火墙开放端口
- 3.16 测试连接
一、环境检查:卸载mysql数据库
1.1 查看mysql的安装情况
rpm -qa |grep -i mysql
# -i表示忽略大小写
mysql80-community-release-el7-7.noarch
mysql-community-common-8.0.32-1.el7.x86_64
mysql-community-client-8.0.32-1.el7.x86_64
mysql-community-icu-data-files-8.0.32-1.el7.x86_64
mysql-community-server-8.0.32-1.el7.x86_64
mysql-community-client-plugins-8.0.32-1.el7.x86_64
mysql-community-libs-8.0.32-1.el7.x86_64
mysql-community-libs-compat-8.0.32-1.el7.x86_64
1.2 依次删除所有相关的包
yum remove mysql80-community-release-el7-7.noarch mysql-community-common-8.0.32-1.el7.x86_64 -y ...
或者
rpm -e --nodeps mysql80-community-release-el7-7.noarch mysql-community-common-8.0.32-1.el7.x86_64 ...
查看版本:mariadb
在CentOS中默认安装有MariaDB,是MySQL的一个分支,主要由开源社区维护。
CentOS 7及以上版本已经不再使用MySQL数据库,而是使用MariaDB数据库。
如果直接安装MySQL,会和MariaDB的文件冲突。
因此,需要先卸载自带的MariaDB,再安装MySQL。
rpm -qa | grep mariadb
删除mariadb
rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64# rpm -e --nodeps 文件名
安装依赖包libaio
安装mysql之前还需要检查下libaio.so.1是否存在;如果不存在,则需要先安装依赖包。
方法一:服务器有网络的情况下,可以通过yum安装
yum search libaioyum install -y libaio
方法二:服务器没有网络,可以先在网络环境下载,然后传输到服务器上进行安装
①下载地址:
http://mirror.centos.org/centos/7/os/x86_64/Packages/libaio-0.3.109-13.el7.x86_64.rpm
②安装命令:
rpm -ivh libaio-0.3.107-10.el6.x86_64.rpm
1.3 查找关于mysql的目录
find /-name mysql
/etc/selinux/targeted/active/modules/100/mysql/var/lib/mysql/var/lib/mysql/mysql/usr/lib64/mysql
1.4 依次删除这些文件夹
rm -rf /var/lib/mysqlrm -rf /var/lib/mysql/mysqlrm -rf /usr/lib64/mysql
1.5 找出并删除mysql的配置文件
find /etc -name my.cnfrm -rf /etc/my.cnf
二 、方案一:使用 MySQL 官方 Yum 源
2.1 Mysql 8.0下载
2.1.1 官方yum源下载
- 关于 yum源 下载链接
https://dev.mysql.com/downloads/repo/yum/ - 下载对应版本mysql源到本地,如果系统是centos7,这里选择el7版本
noarch是Architecture的缩写,说明这个包可以在各个不同的cpu上使用
这里我们选择__mysql80-community-release-el7-7.noarch.rpm
2.1.2 直接选择对应版本下载:
https://repo.mysql.com/
找到相应版本下载: mysql80-community-release-el7-7.noarch.rpm
2.1.3 下载rpm包
wget https://repo.mysql.com/mysql80-community-release-el7-7.noarch.rpm 方案1
或者离线下载
https://www.cnblogs.com/jpxjx/p/16817724.html 方案2
yum install mysql80-community-release-el7-7.noarch.rpm -y ... #安装rpm包或者rpm -ivh mysql80-community-release-el7-7.noarch.rpm ... #安装rpm包
yum install -y mysql-community-server
# 会自动把客户端装上 方案1
或者
#参考redhat7 部署安装mysql8.0文档# #方案2
https://www.cnblogs.com/jpxjx/p/16817724.html
rpm -ivh mysql-community-common-8.0.31-1.el7.x86_64.rpmrpm -ivh mysql-community-client-plugins-8.0.31-1.el7.x86_64.rpm #(注意这个装完才能装下面一个,否则会报错)rpm -ivh mysql-community-libs-8.0.31-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-compat-8.0.31-1.el7.x86_64.rpmrpm -ivh mysql-community-icu-data-files-8.0.31-1.el7.x86_64.rpmrpm -ivh mysql-community-client-8.0.31-1.el7.x86_64.rpmrpm -ivh mysql-community-server-8.0.31-1.el7.x86_64.rpm #(注意上面两个装完才能装这个)
2.2 配置my.cnf文件
- 可选项,如果不需要可跳过,但是建议)
在mysql启动初始化前,一定要确认根据自己所需的MySQL参数,是否需要修改my.cnf文件,
比如区分表名大小写—–>lower_case_table_names = 1
在MySQL8.0之前,是可以在mysql启动后进行重新修改的,
但是8.0之后,只能在MySQL启动前进行配置,
所以强烈建议,在第一次初始化启动MySQL前,先进行配置my.cnf
可参考:https://blog.csdn.net/gzt19881123/article/details/109511245 进行配置
#数据库默认字符集, 主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)character-set-server = utf8mb4#数据库字符集对应一些排序等规则,注意要和character-set-server对应collation-server = utf8mb4_general_ci#设置client连接mysql时的字符集,防止乱码init_connect='SET NAMES utf8mb4'#是否对sql语句大小写敏感,1表示不敏感lower_case_table_names = 1
2.3 启动mysql服务并查看状态
systemctl start mysqldsystemclt status mysqld
2.4 查看默认密码并登录修改密码
grep "password" /var/log/mysqld.log
修改密码
mysql -uroot -pALTER USER 'root'@'localhost' IDENTIFIED BY 'Lqz12345" />;
配置远程连接
USE mysql;UPDATE mysql.user SET host = '%' WHERE user = 'root';SELECT user, host, plugin, authentication_string FROM mysql.user;FLUSH PRIVILEGES;
参考链接:[https://juejin.cn/post/7043605280541638669](https://juejin.cn/post/7043605280541638669)
#MySQL 8.0 创建用户及授权
参考链接:https://juejin.cn/post/7043605280541638669
#MySQL 8.0 创建用户及授权
2.5 配置开机启动启动(可选)
安装MySQL之后,默认为不自启,需要手动开启
查看MySQL是否自启:systemctl is-enabled mysqld开启自启 :systemctl enable mysqld关闭自启 :systemctl disable mysqld
显示enable表示开机自启动,如果是disable,可以修改为开机自启动
systemctl enable mysqld.service # 开机自启动systemctl disable mysqld.service # 禁用开机自启动
2.6 防火墙放行3306端口
永久开放3306端口firewall-cmd --permanent --zone=public --add-port=3306/tcp#重启防火墙systemctl restart firewalld#检测设定是否生效iptables -L -n | grep 3306
开放防火墙端口
开启root远程登录权限后,还无法直接被外界连接,因为MySQL的端口号3306在Linux中默认关闭的。
注意:使用阿里云等云服务器还需要在控制台中安全组策略打开端口,此处省略。
查询3306端口是否开启
firewall-cmd --query-port=3306/tcp
firewall-cmd --zone=public --add-port=3306/tcp --permanent
#开启3306
firewall-cmd --reload
#重新加载防火墙
链接参考:https://www.cnblogs.com/zh76412950/p/16692706.html
2.7 安装后检查mysql版本
mysqladmin --version # 看到是8.0的版本或mysql -V # 看到是8.0的版本
三、方案二:通用二进制安装
glibc版本的Mysql,不是编译版的,是直接编译好的,相当于windows的绿色版
下载链接:https://dev.mysql.com/downloads/mysql/
3.1 清理一下环境
检查:mariadb
rpm -qa |grep mariadbrpm -e --nodeps mariadb-libs
检查mysql的rpm包,有的话全删除
rpm -qa |grep -i mysql
# -i表示忽略大小写
rpm -e --nodeps ...
# 依次挨个删除
删除mysql相关的配置【my.cnf】和目录【mysql】
find /-name mysql #全部删除/var/lib/mysql
rm -rf /var/lib/mysqlcp my.cnf my.cnf_bak #变相备份删除
3.2 创建用户和组
#创建一个用户组:mysqlgroupadd mysql#用户 (用户名/密码)【创建一个系统用户:mysql,指定用户组为mysql】useradd -r -g mysql mysql#检查用户组、用户是否存在groups mysql
3.3 创建相关目录(软件目录,数据目录)
3.3.1 软件目录
mkdir -p /mnt/mysql-8.0
#用于存放安装包
3.3.2 数据目录
mkdir -p /usr/local/mysql-8.0
#安装目录
生产建议:软件目录和数据目录不要放在同一个地方,一般数据目录放在另一块磁盘上【数据磁盘】
3.4 设置权限
chown -R mysql.mysql /usr/local/mysql-8.0chmod -R 755 /usr/local/mysql-8.0
3.5 上传并解压软件到数据目录
安装包下载路径: https://downloads.mysql.com/archives/community/
版本: 8.0.31 — os:Linux-Generic —– osVersion:x86,64
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz
# wget + url命令进行下载
tar -Jxvf mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz -C /usr/local/mysql-8.0/
# 解压到数据目录
Tips:
如果下载速度很慢,或服务器没有网络,可以在Windows中下载好,然后将资源包通过Xftp传到服务器中,在进行后续操作,
使用md5sum mysql-8.0.32-linux-glibc2.12-x86_64.tar.xz
命令检查资源包是否完整
.tar.gz后缀:tar -zxvf
文件名
.tar.xz后缀:tar -Jxvf
文件名
3.6 建立软连接
in-s介绍: https://www.jianshu.com/p/b80f5e62b6dc
ln -s /usr/local/mysql-8.0my.cnf /etc/my.cnf
3.7 设置my.cnf
把默认/etc/my.cnf重命名或删除
centos7默认会有一个/etc/my.cnf文件,为了不影响安装,可以直接删除或重命名
mv /etc/my.cnf /etc/my.cnf.bak 或rm /etc/my.cnf
vim /etc/my.cnf
[mysql]#默认字符集default-character-set=utf8mb4[client]port = 3306default-character-set=utf8mb4[mysqld]port = 3306server-id= 3306user = mysql#数据存放目录basedir=/usr/local/mysql-8.0datadir=/usr/local/mysql-8.0/datasocket=/tmp/mysql.sock#日志log-error=/usr/local/mysql-8.0/data/mysql.logpid-file=/usr/local/mysql-8.0/data/mysql.pid#服务端使用的字符集默认为8比特编码character-set-server=utf8mb4lower_case_table_names=1autocommit =1[client]port = 3306socket =/tmp/mysql.sockcharacter-set-server=utf8mb4
vi/vim命令介绍:https://blog.csdn.net/blood_Z/article/details/125064927
3.8 把bin目录设置到环境变量中
vim /etc/profile
#环境变量
#添加以下内容export PATH="$PATH:/usr/local/mysql-8.0/bin"
3.9 生效配置
source /etc/profile
3.10 启动MySQL
3.10.1 设置开机启动
①创建软链接
ln -s /usr/local/mysql-8.0/support-files/mysql.server /etc/init.d/mysqld
②赋予执行权限
chmod +x /etc/init.d/mysqld
③添加为服务
chkconfig --add mysqld #chkconfig --del mysqld(删除服务)
④查看服务列表
chkconfig --list
3.10.2 启动mysql
/etc/init.d/mysqld start
3.10.2查看是否启动
ps -ef | grep mysql
3.11 查看版本
mysql -V
mysql Ver 8.0.31 for Linux on x86_64 (MySQL Community Server – GPL)
3.12 初始化系统库表(系统数据,数据库要启动,必须依赖一些表,系统表)
cd /usr/local/mysql-8.0/binmysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql-8.0/ --datadir=/usr/local/mysql-8.0/data/ #初始化无密码
或者
cd /usr/local/mysql-8.0/./bin/mysqld --user=mysql --basedir=/usr/local/mysql-8.0 --datadir=/usr/local/mysql-8.0/data --initialize #初始化有密码
如果想设置初始为空密码,可以在–initialize后添加-insecure参数
初始化语句解释:
参数 | 描述 |
---|---|
defaults-file | 指定配置文件(要放在–initialize 前面) |
user | 指定用户 |
basedir | 指定安装目录 |
datadir | 指定初始化数据目录 |
intialize-insecure | 初始化无密码 |
#如果存在报错:
mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
报错原因: Linux系统中缺少libaio-devel 软件包
yum install -y libaio-devel
#安装libaio-devel
3.13 初始化数据,初始化管理员的临时密码
mysqld –initialize –user=mysql –basedir=/usr/local/mysql-8.0/ –datadir=/usr/local/mysql-8.0/data/
== 会打印出密码,记住,然后需要修改root密码后才能正常使用数据库==
3.14 在登陆前修改密码(使用mysqld –initialize 初始化的数据)
初始的随机密码在/usr/local/mysql-8.0/data/mysql.log
中
mysql -uroot -p
#输入原始密码: i(/iJUN3EOey
#修改密码ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Lh@123456';#刷新权限FLUSH PRIVILEGES;
授权root用户允许远程登录
mysql>use mysql;mysql>update user set user.Host='%'where user.User='root';mysql>SELECT user, host, plugin, authentication_string FROM mysql.user;mysql>flush privileges;mysql>exit;
也可以创建新的可远程连接的用户
mysql>create user '用户名'@'主机' identified with mysql_native_password by '密码';mysql>grant all privileges on *.* to '用户名'@'主机';mysql>update user set user.Host='%'where user.User='用户名';mysql>flush privileges;
3.15 配置防火墙:
centos7中:使用systemctl启动
上面安装好了,也设置好了,可以使用图形化工具远程一连接就报错了。
这是因为防火墙没有允许这个连接,我们还需要再设置一下,两种方式关闭防火墙,或者开放端口。
systemctl status firewalld
#查看防火墙状态
systemctl stop firewalld
#临时关闭防火墙
systemctl start firewalld
#开启防火墙
systemctl restart firewalld
#重启防火墙
systemctl disable firewalld
#关闭防火墙开机启动
systemctl enable firewalld
#开启防火墙开机启动
正式工作环境,为了信息安全建议先修改数据库默认端口,然后通过防火墙开放这个自定义端口再进行使用。
netstat -lntp
#查看系统端口占用情况
3.15.1 修改MySQL默认端口
vim /usr/local/mysql-8.0/my.cnf
#修改配置文件my.cnf,将端口后修改为自定义端口号
说明:
Linux系统端口号范围为0-65535,不同的范围有不同意义 0 不使用 1–1023 系统保留,只能由root用户使用 1024—4999 由客户端程序自由分配 5000—65535 由服务器端程序自由分配查看端口号在/etc/services
。
3.15.2 防火墙开放端口
1)开启防火墙
systemctl start firewalld
2)防火墙开启端口
firewall-cmd --zone=public --add-port=33066/tcp --permanent
如果需要关闭端口,可执行如下命令
firewall-cmd --zone=public --remove-port=33066/tcp --permanent
3)刷新防火墙配置
firewall-cmd --reload
4)查看已经开放的端口
firewall-cmd --list-ports
5)重启MySQL服务
systemctl start mysqld
PS
chkconfig --add mysqld # 把mysqld的脚本添加到systemctl的管理中chkconfig --list# 查看可以通过systemctl管理的脚本systemctl start mysqld###至此,启动方式可以是service mysqld start或者systemctl start mysqld或者/etc/init.d/mysqld start或者/usr/local/mysql-8.0/l/support-files/mysql.server start
3.16 测试连接
在Navicat上再次进行测试连接,成功了
参考链接:CentOS7下MySQL数据库二进制部署方法
https://mp.weixin.qq.com/s/iFOB7Ox4ADKxsb_52_nnGw