zoukankan      html  css  js  c++  java
  • Mysql之rpm安装5.7版本遇见的问题

    前言:环境是centos7.5的系统,用rpm方式安装mysql5.7

    1、由于是centos7.5 所以需要将默认的mariadb给卸载

    rpm -qa | grep mariadb 查看下是否有mariadb包(没有的话略过)

    rpm -e --nodeps 上一步显示的包名逐一删除(上述的包存在依赖关系直接用--nodeps 强制删除)

    2、将下载的rpm包解压(例如下),别忘了解压的目录在哪

    3、用rpm -ivh 来一次安装解压的包

    rpm -ivh mysql-community-common-5.7.24-1.el7.x86_64.rpm
    rpm -ivh mysql-community-libs-5.7.24-1.el7.x86_64.rpm  --(依赖于common)
    rpm -ivh mysql-community-client-5.7.24-1.el7.x86_64.rpm  --(依赖于libs)
    rpm -ivh mysql-community-server-5.7.24-1.el7.x86_64.rpm  --(依赖于client、common)
    rpm -ivh mysql-community-devel-5.7.24-1.el7.x86_64.rpm  --(一些库和文件)

    4、我在这里多了一步操作将/etc/my.cnf 备份下然后将已经修改好的my.cnf 复制到/etc下(可忽略,根据自己情况而定)

    默认生成的配置文件

    修改后的配置文件

    从上面修改后的my.cnf可看出  log位置 发生变化 该修改创建目录的创建mkdir(别忘了给目录mysql的所属用户和组)

     5、到此基本就安装完成启动即可

      systemctl start mysqld.service

    6、mysql -uroot -p 登录 这里还没有设置秘密直接敲回车正常情况是可以直接进入的,然后就可以修改密码了

    update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost'; #centos7后没有了password表,使用的是authentication_string
    mysqladmin -uroot password "密码" #在没有进mysql中前修改密码方法
    set password=passeword(“新密码”) #为密码用户修改密码 

    正常情况msyql就安装结束了,但是生活不会这么轻易放过你的,接下来问题就出现了。。。。

    1、首先mysql -uroot -p 登录报错(ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES))

    解决方法:在my.cnf配置文件中[mysqld]后加 skip-grant-tables  (跳过权限检查)

         重启mysql服务重新登录后按上述方法可重新设置密码

         最后别忘了把添加的那一行给注释了

    2、本以为这样就结束了,但是生活仍然会继续摧残你 ;使用语句修改密码提示(ERROR 1819 (HY000): Your password does not satisfy the current policy requirements)密码策略异常信息,由于公司所有mysql密码都一样没法更换

    解决方法:查看初始密码策略  SHOW VARIABLES LIKE 'validate_password%';

         设置密码验证强度等级  set global validate_password_policy=LOW; 

         默认长度为8也可设置  set global validate_password_length=6; 

    3、一切都正常了,我需要给普通用户的加权限

    grant all on *.* to '用户'@'允许访问的ip地址' identified by '密码';

    问题又来了。。。。ERROR 1290(HY000):The MySQL server is running with the --skip-grant-tables option so it cannot execute this staatement

    解决方法:这个报错可能是由于上面设置--skip-grant-tables后忘记删除了,所以回去检查了一遍发现已经注释了,但是没有重启,现在又不方便重启

         使用 flush privileges;刷新下授权即可

    其它的一些报错常规处理

    1、缺少sock,如图

     

    解决方法:显然是sock文件没有找到;首先查看msyql的进程有没有正常启动,这个报错90%进程就没起来。查看配置文件里写的这个路径是否正确,实际的路径下有没有mysql这个目录,这个目录是否有权限属主(注意有时候自动生成的mysql是mysqld目录)

    2、

    libaio.so.1(LIBAIO_0.4)(64bit) 被 mysql-community-server-5.7.24-1.el7.x86_64需要
    find -name libaio*  如果有 yum -y remove libaio* 卸载重新安装

    这是在安装过程中去缺少依赖,这里我直接用yum -y install libaio 安装的 

    3、

    根据提示,分别使用systemctl status mysqld.service和journalctl -xe查看服务启动失败的原因(并没有啥卵用)

    打开报警日志

    提示不能创建pid,查看目录是否存在,属主属组是否是mysql,重启

    4、

    ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

    进入mysql后 不管输入什么命令都报这个错误;查资料说参数是default_password_lifetime字段控制的

    解决方法:

    alter user user() identified by "123456"; #修改密码就可以了

    具体原因看下这个作者写的 https://blog.csdn.net/hj7jay/article/details/65626766

    一键部署小脚本仅供参考

    #!/bin/bash
    
    
    set -x  #命令打印到屏幕
    systemctl stop mariadb
    
    #卸载mariadb
    temp_rpm=$(rpm -qa | grep -E  "mariadb|mysql")
    for item in $temp_rpm
    do
            rpm -e $item --nodeps
    done
    
    cd ../mysql
    
    rpm -ivh mysql-community-common-5.7.24-1.el7.x86_64.rpm
    rpm -ivh mysql-community-libs-5.7.24-1.el7.x86_64.rpm
    rpm -ivh mysql-community-client-5.7.24-1.el7.x86_64.rpm
    rpm -ivh mysql-community-server-5.7.24-1.el7.x86_64.rpm
    rpm -ivh mysql-community-devel-5.7.24-1.el7.x86_64.rpm
    
    systemctl stop mysqld.service
    
    mv /etc/my.cnf /etc/my.cnf.bak
    cp ../mysql/my.cnf /etc/my.cnf
    mkdir -p /var/log/mysql/
    chown -R mysql.mysql /var/log/mysql/
    rm -rf /home/rzrk/mysql
    systemctl start mysqld.service
    sqlpw=`cat /var/log/mysql/mysqld.log | grep root@localhost | awk 'END{print $11}'` echo $sqlpw mysql -uroot -p$sqlpw --connect-expired-password -e"set global validate_password_policy=0; set password for root@localhost = password('mysql.rzrk');"
    systemctl stop mysqld.service
    systemctl start mysqld.service
  • 相关阅读:
    C++ list<list<int> >类型的对象遍历
    Apache与Nginx服务器对比
    服务器重写技术:rewrite
    冒泡排序(python版)
    有k个list列表, 各个list列表的元素是有序的,将这k个列表元素进行排序( 基于堆排序的K路归并排序)
    堆排序(C++版)
    [转载] 单链表的相关操作
    TCP三次握手连接与四次握手断开
    [转载] TCP与UDP对比
    进程与线程的联系与区别
  • 原文地址:https://www.cnblogs.com/aloneysir/p/11287431.html
Copyright © 2011-2022 走看看