目录
问题现象:
问题分析:
解决方法:
下载:
安装:
配置:
连接:
拓展
问题现象:
今天在使用Centos8 安装MySQL5.7的rpm包时,出现如下报错:
仓库 "MySQL 5.7 Community Server" 的 GPG 公钥已安装,但是不适用于此软件包。
最终问题解决了,但还是把Centos8/linux下载、安装、配置、启动、连接MySQL(rpm方式)的整个步骤总结一下,希望对小伙伴们有所帮助。
问题分析:
1、首先是使用wget命令,下载mysql服务的rpm包【这里以经典的mysql5.7版本为例】:
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
至此mysql服务的下载就完成了。
2、然后是本地安装localhostinstall命令:
yum localinstall mysql57-community-release-el7-8.noarch.rpm
3、安装后查询:
yum repolist enabled | grep "mysql.*-community.*"
4、然后启动 mysql服务失败:
systemctl start mysqld
5、然后上网看了是需要安装mysql-community-server:
yum install mysql-community-server
6、不成功,网上资料说要先禁用mysql模块:
sudo yum module disable mysql
7、然后再次安装mysql-community-server:
sudo yum -y install mysql-community-server
8、出现gpg公钥报错【仓库 “MySQL 5.7 Community Server“ 的 GPG 公钥已安装,但是不适用于此软件包】:
9、查询资料,发现要先修改公钥url:
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
10、再次安装mysql-community-server成功:
sudo yum -y install mysql-community-server
11、启动mysql服务成功:
systemctl start mysqld
12、查看mysql服务状态:
systemctl status mysqld
至此mysql服务的安装就完成了。mysql服务可以正常启动。
13、查看mysql日志,获取root用户的初始密码:
grep 'temporary password' /var/log/mysqld.log
14、登录账号,并修改账号密码(这里我修改为123456):
mysql -uroot -p
输入上一步中获取的初始密码,登录后修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
报错:密码不符合当前策略【要带字母、数字、符号】。这是因为安装的mysql中,自带了密码校验插件;要解决这个问题,就需要关闭该插件。步骤如下:
15、先查找文件my.cnf所在路径:
find / -name 'my.cnf'
16、关闭密码校验插件,有以下2种方案供参考:
16.1、在文件my.cnf末尾添加关闭密码校验的配置(这里我选择这种方案):
validate-password=OFF
保存退出。
16.2、如果想卸载自带的密码校验插件,也可以执行:
uninstall plugin validate_password;
17、重启mysql服务
systemctl restart mysqld
18、再次修改账号密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
19、不过有些公司或项目规定是不允许操作和使用root账户的,因此这里我再提一下如何创建用户和授权:
19.1 创建用户:
create user '用户名'@'ip地址' identified by '密码';
19.2 全授权:
grant all privileges on *.* to '用户名'@'ip地址';
19.3 :刷新权限:
flush privileges;
19.4、这里再提供一种创建用户并全授权的sql:
GRANT ALL PRIVILEGES ON *.* TO '用户名'@'ip地址' IDENTIFIED BY '密码' WITH GRANT OPTION;
19.5、如果只想授权部分功能(如:INSERT、UPDATE、DELETE、SELECT、CREATE、EXECUTE):
GRANT INSERT,UPDATE,DELETE,SELECT,CREATE,EXECUTE ON *.* to '用户名'@'ip地址';
# 查看当前已有用户信息
select User,authentication_string,Host from user;
#查看用户权限信息
SHOW GRANTS FOR '用户名'@'ip地址';
如果权限配置完,没有生效的话,建议重启一下mysql服务:
systemctl restart mysqld
至此mysql服务的配置就完成了。mysql服务可以正常使用,但还不能被外部连接访问。
20、查看mysql服务的端口:
ps -ef|grep mysqld
netstat -nap|grep mysqld服务的进程号
可以看到mysql服务使用的是3306端口。
21、查看防火墙状态:
sudo firewall-cmd --state
22、如果防火墙在运行中,那就需要查看3306端口是否被开放:
sudo firewall-cmd --query-port=3306/tcp
23、如果3306端口未开放,则需要开放该端口并重启防火墙:
sudo firewall-cmd --zone=public --add-port=端口号/tcp --permanent
sudo firewall-cmd --reload
24、外界使用Navicat或dbeaver等数据库工具来连接服务器上的mysql数据库:
至此mysql的连接就完成了。
解决方法:
下载:
1、首先是使用wget命令,下载rpm包:
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
安装:
2、然后是本地安装localhostinstall命令:
yum localinstall mysql57-community-release-el7-8.noarch.rpm
3、安装后查询:
yum repolist enabled | grep "mysql.*-community.*"
4、禁用mysql模块:
sudo yum module disable mysql
5、修改公钥url:
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
6、安装mysql-community-server:
sudo yum -y install mysql-community-server
7、启动mysql服务成功:
systemctl start mysqld
8、查看mysql服务状态:
systemctl status mysqld
配置:
9、查找文件my.cnf所在路径:
find / -name 'my.cnf'
10、在文件my.cnf末尾添加关闭密码校验的配置,保存退出:
validate-password=OFF
11、重启mysql服务
systemctl restart mysqld
12、根据mysqld.log文件查看初始密码:
grep 'temporary password' /var/log/mysqld.log
13、登录账号,并修改账号密码(这里我修改为123456):
mysql -uroot -p
输入上一步中获取的初始密码,登录。
14、修改密码:
GRANT ALL PRIVILEGES ON *.* TO '用户名'@'ip地址' IDENTIFIED BY '密码' WITH GRANT OPTION;
15、退出mysql并重启mysql服务
exit
systemctl restart mysqld
16、查看mysql服务的端口:
ps -ef|grep mysqld
netstat -nap|grep mysqld服务的进程号
17、查看防火墙状态:
sudo firewall-cmd --state
18、如果防火墙在运行中,那就需要查看mysql服务的端口是否被开放:
sudo firewall-cmd --query-port=mysql服务的端口号/tcp
19、如果mysql服务的端口未开放,则需要开放该端口并重启防火墙:
sudo firewall-cmd --zone=public --add-port=端口号/tcp --permanent
sudo firewall-cmd --reload
连接:
20、外界使用Navicat或dbeaver等数据库工具来连接服务器上的mysql数据库:
如果不知道服务器ip,可以先查看ip,然后外界和服务器之间ping一下,保证网络能互通:
ifconfig
这里我就直接在外界ping服务器了,保证网络能互通,拿数据库连接基本就不会有问题:
拓展:
这里再提一下mysql服务的一些基础命令:
# 开机启动服务
systemctl enable mysqld
systemctl daemon-reload
#启动服务
systemctl start mysqld
# 重新启动服务
systemctl restart mysqld
# 查看服务当前状态
systemctl status mysqld
#停止服务
systemctl stop mysqld
# 永久性停止服务
systemctl disable mysqld