目录

问题现象:

问题分析:

解决方法:

下载:

安装:

配置:

连接:

拓展

 


问题现象:

        今天在使用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
posted on 2023-07-25 11:34  锋齐叶落  阅读(659)  评论(0编辑  收藏  举报