安装过程
我们可以通过cmd进行安装,因为CentOS8有一个软件管理器,它能够提供mysql8的安装方法(需要有root权限的用户)。
首先找到cmd:
进入cmd之后,我们可以查看一下自己系统中有没有安装过mysql其他版本,有的话需要先卸载,再安装新版本
输入以下命令进行查看:
rpm -qa | grep mysql
如果什么都没有显示,而是紧接着让你输入新的指令,说明你的电脑本身没有自带任何关于mysql的服务。
接下来我们就可以输入以下指令开始安装操作:
sudo dnf install @mysql
注意:你所使用的用户一定要具备root权限,否则“sudo”操作无法执行
输入用户密码,进行安装操作,会显示出各种需要安装的软件包,接下来只需要确认,yes即可:
下载完毕,需要你继续确认安装:
确认之后稍微等待,会提示你安装成功:
这时我们再次输入指令:
rpm -qa | grep mysql
会发现终端显示出已经安装好的mysql版本信息:
之后我们可以输入以下命令来启动mysql服务,并让其以后可以自动启动:
sudo systemctl enable --now mysqld
同样会要求你再次输入密码
启动后,我们可以检查mysql服务是否正在运行,输入:
sudo systemctl status mysqld
可以看到,mysql运行状态信息被显示出来,“active”表示正在运行。
之后我们需要进行一些安全设置操作,例如设置根密码。
输入以下指令运行mysql_secure_installation脚本:
sudo mysql_secure_installation
它会询问你是否要设置有效密码,这里建议选择yes,不然都是不需要密码就可以登录服务器,这样十分不安全:
之后会让你设置密码安全等级:
“0”表示最低级密码安全设置,它对于你设置密码除了长度要求外,没有任何限制。
“1”表示中档密码安全设置,它不仅要求长度,还要求大小写混合,以及特殊符号。
“2”表示最高级密码安全设置,它额外要求一个索引文件作为密码(我觉得平时自己搞,没必要整这个)
这里我就我选择了0,只是做个简单演示。
接着它就让你设置密码,并确认:
注意:你输入的密码他不会显示出来,不要以为是自己没输入进去
接下来会显示你设置的密码的密码强度,并且询问你是否确认密码,输入yes来确认:
之后会询问你是否要删除匿名用户,这里选择yes就可以:
下一步询问你是否要让root用户只允许本地连接,这里同样建议yes:
最后询问你是否要删除本地测试数据库,以及是否重新加载特权表,建议删除测试数据库,并重新加载特权表(这里我为了测试后面能否局域网连接,所以没删除测试数据库):
设置完毕,我们就可以登录mysql服务了,通过如下指令:
mysql -u 用户名 -p
之后会让你输入密码,密码正确便能成功登录
局域网访问
首先咱们要先查看一下有哪些数据库,并确定要允许局域网访问的库 (每一个数据库都是单独授权的!!!):
利用指令(注意结尾分号)显示所有的数据库:
show databases;
比如这里我想让mysql这个数据库可以被远程访问,第一件事先进入数据库,利用如下指令:
use 数据库名;
这块我忘打分号了,最好把分号加上
进入数据库后,首先查看一下此库的用户列表,并可以显示他们的登录权限,利用如下指令(只有进入某一个数据库后才能查看):
select user,host from user;
注意:此处的“host”一栏表示这个账号允许进行登录操作的位置,显示“localhost”表明只允许这个账号本地登录,不允许在其他机器上登录,而“%”是一个通配符,表示这个账号可以在任何地方进行登录,当然我们也可以进行IP地址限定,比如限定它只能从“192.168.%.%”的地址中登录(表示只允许开头为192.168的IP地址登录,后面两部分是什么都可以)
我这里是已经创建好了一个用户名叫“cat”的用户,这里说明一下如何创建这样一个用户。
输入以下指令创建用户:
注意:此处的密码设置需要符合之前设定的密码安全等级,不然会报错
CREATE USER '用户名'@'host范围' IDENTIFIED BY '密码';
我们创建完用户后,还可以用root用户给这个新创建的用户授权,比如授权他进行对数据库内表格的“删除”“创建”等一系列操作,具体授权方法可以去网上查一下,在这里不是重点。
当然,我们也可以选择更改其他已有用户的登录地点限制,比如将用户“root”的“localhost”改成“%”,我们甚至可以创建同一个用户名不同密码的存在,根据登陆者使用的密码不同,他们所允许登录的地点也不相同,下面有个关于这个机制的解释连接
https://blog.csdn.net/highsinging/article/details/53817485
我们创建好新的用户之后不要忘记用以下指令刷新授权,否则无法生效:
FLUSH PRIVILEGES;
之后重启mysql服务,直接关闭,然后再次打开终端输入用户名密码即可,我不清楚这一步是否一定需要,但在我这里是这样,否则会出现连接异常,而且根本无法解决。
防火墙设置
至此,我们设置好了mysql的远程配置,但我们还需要设置CentOS的网络防火墙,否则局域网内其他机器依然无妨登录数据库。
我们再次打开终端,然后输入以下指令打开防火墙3306端口(首先要确保防火墙是开启的状态):
firewall-cmd --zone=public --add-port=3306/tcp --permanent
下一步非常关键,我们要“reload”让配置立即生效,输入以下代码:
firewall-cmd --reload
如果你不输入这个,防火墙设置不会更新,很多教程都没有提这一点,会导致迷之错误,无法解决。
关于CentOS防火墙其他设置,请看:
Centos8防火墙配置、端口、进程管理
可以看到,如果我不进行“reload”操作,当我进行端口询问的时候,此端口还是关闭的,“reload”完毕,他才开启。
之后我们需要查看一下本机IP地址,这样其他局域网用户才可以找到本机,并登录数据库:
我的IP地址是“192.168.197.128”,主机名为CentOS8.1。
接下来试一下在我的Windows电脑上登录数据库,输入:
mysql -h 服务器IP地址 -u 用户名 -p
之后输入密码便能成功登录: