本篇博客将演示Centos7的环境下安装Mysql8,下面是本篇博客演示的环境,上一篇博客Centos7安装Mysql5.7可谓是让小编吃尽了苦头Centos7安装配制Mysql5.7,一直碰壁,好在在小编的坚持下硬是写出了一篇没毛病的文章,但是远程连接的问题暂时还是没有处理好,有知道这个bug的读者朋友可以在评论区解答一些小编这个问题,感谢!!!
// 演示环境
VMware Workstation 16.2.1 // 虚拟机软件
CentOS-7-x86_64-Minimal // 系统版本
mysql-8.0.13 // mysql版本
有些版本的Centos会自带一个数据库 mariadb
会跟mysql冲突,有点话要先删除,可以执行以下命令检查系统中是否存在mariadb 的相关安装包(有多少删多少)。
rpm -qa|grep mari
rpm -e --nodeps mariadb-libs
在后面mysql启动的过程中可能会出现以下报错
// 报错信息
mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
原因是因为缺少了 libaio 这个依赖库,所以我建议小伙伴们在安装前就安装好这个依赖库,没有安装的小伙伴可以执行以下命令进行安装。
yum install -y libaio
除了小编接下来要使用的wget的安装方式,还可以前往官网下载再上传到虚拟机 点击跳转官网
首先执行以下命令 在 /usr/local 目录下新建一个 mysql 文件夹
mkdir /usr/local/mysql
进入 /usr/local/mysql 目录
cd /usr/local/mysql
使用以下命令 进行安装包的下载 使用前要确保系统已经安装了wget 如果没有则执行
yum -y install wget
进行安装
wget https://cdn.mysql.com//archives/mysql-8.0/mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz
上一步我们已经将安装包下载到 /usr/local/mysql
目录下 接下来我们执行以下命令解压安装包
tar -xvf mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz
执行以下命令,修改系统环境配置文件
vi /etc/profile
将以下内容添加到文件末尾
export PATH=$PATH:/usr/local/mysql/mysql-8.0.13-linux-glibc2.12-x86_64/bin
export PATH=$PATH:/usr/local/mysql/mysql-8.0.13-linux-glibc2.12-x86_64/support-files
增加完退出后 执行以下命令使修改的内容快速生效
source /etc/profile
执行以下命令创建一个用户组
groupadd mysql
设置用户和密码
useradd -g mysql mysql
执行以下命令对mysql的安装目录进行授权
chown -R mysql.mysql /usr/local/mysql/mysql-8.0.13-linux-glibc2.12-x86_64
执行以下命令进行初始化
mysqld --initialize --user=mysql
初始化时可以看到mysql默认帮我们生成的root用户密码,记得记录好,下面要用到
先执行以下命令在mysql安装目录下创建一个数据的存放目录
mkdir /usr/local/mysql/mysql-8.0.13-linux-glibc2.12-x86_64/data
再执行以下命令修改mysql服务的配置文件 将 mysql安装目录 和数据库存放目录都配置好
vi /usr/local/mysql/mysql-8.0.13-linux-glibc2.12-x86_64/support-files/mysql.server
可以看到刚开始是没有帮我们配置好的,将这两行替换成下面两行代码,修稿后保存退出
basedir=/usr/local/mysql/mysql-8.0.13-linux-glibc2.12-x86_64
datadir=/usr/local/mysql/mysql-8.0.13-linux-glibc2.12-x86_64/data
下面是各位用户朋友以后可能会用到的一些配置,小编给大家列出来了,大家可以根据自己的系统环境进行修改。
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
# 数据库允许最大连接数
max_connections=10000
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8
将mysql服务添加到系统服务这样更有利于对mysql的运维,执行以下命令将mysql服务文件拷贝到系统服务目录并修改服务名
cp /usr/local/mysql/mysql-8.0.13-linux-glibc2.12-x86_64/support-files/mysql.server /etc/init.d/mysqld
自此Mysql的服务名就叫mysqld
了
为了保险起见执行以下命令将权限也修改一下,加个执行权限
chmod +x /etc/init.d/mysqld
经过上面的配置,如果没有别的问题的话就可以执行启动mysqld服务了
systemctl start mysqld
执行以下命令设置mysqld服务开机自启动
systemctl enable mysqld
这里小编还给各位读者朋友准备了一些操作mysqld服务的一些常用命令
$ systemctl daemon-reload //重载系统服务
$ systemctl list-unit-files --type service //查看全部服务命令
$ systemctl status mysqld // 查看mysqld服务状态
$ systemctl enable mysqld //设置mysqld开机自启动
$ systemctl disable mysqld // 关闭mysqld开机启动
$ systemctl start mysqld // 启动mysqld服务
$ systemctl stop mysqld // 停止mysqld服务
$ systemctl restart mysqld// 重启mysqld服务
除了初始化时显示出来的密码,还可以执行以下命令查看mysql安装时随机帮我们生成的root用户密码。
// 如果这个方法无法查看那只能回去找初始化时显示的密码了
grep "password" /var/log/mysqld.log
这里 -u
是指定用户的意思而 -p
就是指定登陆密码的意思,这里密码是依照个人环境而定 这里系统随机生成的密码是: CkphQ0;J>A6o
$ mysql -u root -p
登陆成功后可以执行以下命令,修改登陆时的密码,我这里设置的密码是123456
alter user 'root'@'localhost' identified by '123456';
flush privileges;
在命令行执行以下命令则可以退出客户端 下次登录时就需要我们设置的密码了
exit;
登陆进入mysql后,依次执行以下命令则可以设置mysql远程登陆
切换到 mysq l数据库
use mysql;
修改user表host的权限为所有ip地址都可以进行登陆
update user set host ='%' where user ='root';
修改完后执行以下命令刷新一下是修改的内容立即生效
flush privileges;
Mysql默认远程登录监听的端口是3306所以我们要放行服务器3306的端口,可以执行以下命令放行当前服务器的3306端口
// 放行防火墙8080端口(–permanent永久生效,没有此参数重启后失效)
firewall-cmd --zone=public --add-port=3306/tcp --permanent
执行以上命令放行后,需要重启一下防火墙,使配置立即生效。
// 重启防火墙
firewall-cmd --reload
这里小编还给大家提供了一些防火墙服务的常用命令
firewall-cmd --state // 查看防火墙状态
systemctl stop firewalld.service // 关闭防火墙(不推荐使用)
systemctl disable firewalld.service // 阻止防火墙开机启动
firewall-cmd --reload // 重启防火墙
firewall-cmd --zone=public --list-ports // 查看防火墙所有开放的端口
firewall-cmd --permanent --zone=public --remove-port=3306/tcp // 关闭3306端口
完成上面的步骤,如果没有别的问题的话,我们就可以使用工具远程连接我们的服务器了
本篇博客就演示到这里了,感觉还是遗漏了很多细节,后续小编会慢慢修改,如果觉得有用各位读者朋友可以给小编点一个免费的赞,后续专栏将会更新更多的优质内容,期待的读者朋友不妨点个订阅,谢谢大家。