• 记录:CentOS安装配置MySQL8


    • CentOS 7.9 64位
    • MySQL 8
    • 之前都是用docker安装这次想学下alibaba/canal改配置有点麻烦,所以虚拟机安装mysql记录一下安装过程和细节
    • Windows下安装可以看我的:windows安装mysql8

    1、安装 MySQL8

    1.1、安装 mysqlmysql-devel

    yum install mysql
    yum install mysql-devel
    
    • 1
    • 2

    1.2、安装 mysql-server

    wget http://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm
    rpm -ivh mysql80-community-release-el7-5.noarch.rpm
    yum install mysql-community-server
    
    出现:全部都y
    Is this ok [y/d/N]: y
    Is this ok [y/d/N]: y
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    1.3、安装完成查看已安装的包

    rpm -qa |grep -i mysql
    
    • 1

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ioc6oeoI-1667818471990)(https://cdn.jsdelivr.net/gh/Tame-complexity/tuchuang/blog/image-20221107153511695.png)]

    1.4、重启mysql服务

    安装完成后重启mysql服务后会生成初始化密码

    service mysqld restart #重启mysql
    或
    systemctl restart mysqld
    systemctl status mysqld #查看mysql服务状态
    
    • 1
    • 2
    • 3
    • 4

    mysql8初次安装后,需要先通过cat /var/log/mysqld.log | grep password 命令查看密码,修改密码时,需要 符合长度为8,且含有数字、小写或大写字母、特殊字符

    1.5 、查看初始化的密码

    [root@localhost ~]# cat /var/log/mysqld.log | grep password
    2022-10-24T19:38:34.611116Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: iiaE%3BdnfUJ   #iiaE%3BdnfUJ这就是初始的密码
    
    
    • 1
    • 2
    • 3

    1.6、登录MYSQL

    # 登录mysql并输入密码,输入密码是看不见的
    mysql -u root -p
    
    • 1
    • 2

    image-20221107154248528

    2、安装完成后的配置

    2.1、修改密码

    # mysql8 修改密码方式
    alter user 'root'@'localhost' identified by '密码'; 
    #密码必须含有数字、小写、大写字母、特殊字符,八位
    
    • 1
    • 2
    • 3

    image-20221107154523258

    2.2、修改密码规则

    要是希望密码可以设置简短一点可以调整密码验证规则

    先查看密码验证规则

    SHOW VARIABLES LIKE 'validate_password%';
    
    • 1

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oYvmUXEZ-1667818471992)(https://cdn.jsdelivr.net/gh/Tame-complexity/tuchuang/blog/image-20221107154955140.png)]

    MySQL 8.0 调整密码验证规则:这和mysql5.x有点差别(5.7中.改成_)

    mysql> set global validate_password.policy=0;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> set global validate_password.length=1;
    Query OK, 0 rows affected (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vx3GuHnP-1667818471992)(https://cdn.jsdelivr.net/gh/Tame-complexity/tuchuang/blog/image-20221107183810636.png)]

    image-20221107183844563

    这样就可以设置简短的密码了

    alter user 'root'@'localhost' identified by '密码';    #唯一要求就是密码要大于4位
    
    mysql> alter user 'root'@'localhost' identified by 'admin';
    Query OK, 0 rows affected (0.00 sec)
    
    • 1
    • 2
    • 3
    • 4

    2.3、开启用户远程访问

    use mysql  #使用mysql数据库
    update user set host = '%' where user = 'root';   #开启用户远程访问
    flush privileges;    #命令刷新刚才修改的权限,使其生效,`最好每次修改配置都执行下这条命令`
    
    • 1
    • 2
    • 3

    flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。 MySQL用户数据和权限有修改后,希望在"不重启MySQL服务"的情况下直接生效,那么就需要执行这个命令。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rQF3B3G7-1667818471993)(https://cdn.jsdelivr.net/gh/Tame-complexity/tuchuang/blog/image-20221107160102719.png)]

    这里需要放行防火墙或安全策略组

    防火墙配置可以看我的: 防火墙配置

    2.4、Navicat测试连接

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o5iy4vlX-1667818471994)(https://cdn.jsdelivr.net/gh/Tame-complexity/tuchuang/blog/image-20221107160257985.png)]

    3、忘记密码怎么办

    要是默认密码一直输入不正确进不去mysql控制台或者mysql忘记密码了就修改配置文件免密登录

    [root@localhost ~]# mysql -u root -p
    Enter password:
    ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)

    3.1、修改配置文件

    编辑 MySQL 的配置文件vim /etc/my.cnf,加入下面这句skip-grant-tables,保存并退出,然后重启mysql服务。

    vim /etc/my.cnf
    #按i进入编辑模式shift+g跳到尾行在尾部加入
    skip-grant-tables
    #按Esc:wq保存退出
    
    • 1
    • 2
    • 3
    • 4

    image-20221107161014843

    3.2、重启mysql服务,登录mysql(这时不需要密码)

    systemctl restart mysqld
    
    • 1

    image-20221107161154750

    3.3、将默认的 root 密码置空,并退出命令行

    use mysql;
    update user set authentication_string='' where user='root';
    
    • 1
    • 2

    image-20221107161441844

    3.4、删除配置文件中的skip-grant-tables

    删除或注释刚才/etc/my.cnf 文件最后的 skip-grant-tables

    vim /etc/my.cnf 注释完毕后,保存退出

    image-20221107161540125

    重启mysql服务, 提示输入密码时直接敲回车,因为我们刚才已经将密码置为空了。

    systemctl restart mysqld 
    mysql -uroot -p 
    
    • 1
    • 2

    3.5、配置密码

    使用 ALTER 修改 root 用户密码

    ALTER user 'root'@'localhost' IDENTIFIED BY 'admin';
    
    • 1

    4、问题解决

    • 问题一

    ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement 报错这个是没有注释掉或删除,或者没有重启mysql服务

    • 问题二

    mysql> ALTER user ‘root’@‘localhost’ IDENTIFIED BY ‘admin’;

    ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

    您的密码不符合当前政策要求,看上方2.2部分
    
    • 1
    • 问题三

    要是改了远程登录再用

    mysql> ALTER user ‘root’@‘localhost’ IDENTIFIED BY ‘admin’;

    ERROR 1396 (HY000): Operation ALTER USER failed for ‘root’@‘localhost’

    报错,改用一下命令修改密码

    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'admin';
    #admin是密码
    
    • 1
    • 2
    • 问题四

    ERROR 1193 (HY000): Unknown system variable ‘validate_password_length’

    MySQL8.0中无效。‘validate_password_policy’ 变量不存在,

    解决

    8.0用

    set global validate_password.policy=0;
    set global validate_password.length=1;
    
    • 1
    • 2

    5.7用

    set global validate_password_policy=0;
    set global validate_password_length=1;
    
    • 1
    • 2

    5、MYSQL卸载脚本

    最后附上删除mysql脚本

    vim mysqldel.sh
    
    • 1

    复制下面的内容进去

    rpm -aq | grep -i mysql >rmsql.sh
    sed -i -e 's/^/yum remove -y /' rmsql.sh
    chmod +777 rmsql.sh
    find / -name mysql >my.sh
    sed -i -e 's/^/rm -rf /' my.sh
    chmod +777 my.sh
    ./rmsql.sh 
    ./my.sh 
    rm -f my.sh
    rm -f rmsql.sh
    rm -rf /etc/my.cnf
    rm -rf /var/log/mysqld.log
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    给予执行权限

    chmod +777 mysqldel.sh
    
    • 1

    执行

    ./mysqldel.sh
    
    • 1

    删除mysqldel.sh

    rm -f mysqldel.sh
    
    • 1

    检测是否还有未卸载的mysql包

    rpm -qa |grep -i mysql
    
    • 1
  • 相关阅读:
    关于java中的static关键字
    26版SPSS操作教程(高级教程第十三章)
    基于Java+SpringBoot+Vue宠物领养系统的设计与实现 前后端分离【Java毕业设计·文档报告·代码讲解·安装调试】
    C和指针 第10章 结构和联合 10.10 问题
    HarmonyOS开发:动态共享包的依赖问题
    LeetCode刷题3:哈希篇
    2-11.基金管理人的合规管理
    反编译之崩溃定位
    TMD,JVM类加载原来是这样的!!!!
    Python 作为开发语言可以吗?怎么掌握 python 才能提升自己
  • 原文地址:https://blog.csdn.net/crayon0/article/details/127736879