• 解决mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)


    1 现象

    mysql -u root -p

    错误:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)
    2 linux系统:

    在配置文件my-default.cnf或my.cnf下

    [mysqld]下添加skip-grant-tables;因为此方法无效,所以找到了以下方法

    为了加强安全性,MySQL5.7为root用户随机生成了一个密码,在error log中,关于error log的位置,如果安装的是RPM包,则默认是/var/log/mysqld.log。

    所以在/var/log/找到文件mysqld.log

    用命令:vi 打开

    进入命令模式

    查找生成的随机密码

    输入:/temporary password

    可以看到:

    A temporary password is generated for root@localhost: <你要找的临时密码>
    所以就可以以此密码登陆‘root’用户了
    mysql -u root -p 回车
    要输入密码:<上面找到的临时密码>
    输入:use mysql;
    进入mysql后就是修改密码了
    如果直接输入:update user set authentication_string=password('新密码,例如:123456') where user='root';
    则:ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
    这个意思是说你设置的密码‘123456’不符合安全规则(1.必须含有数字,小写或大写字母,特殊字符;
    2.最小长度为8)


    必须修改两个全局参数
    首先,修改validate_password_policy参数的值
    set global validate_password_policy=0;
    这样就去除了规则 1,只有长度限制了
    接下来修改参数 validate_password_length
    mysql> select @@validate_password_length;#查看参数值
    +----------------------------+
    | @@validate_password_length |
    +----------------------------+
    | 8 |
    +----------------------------+

    set global validate_password_length=1;

    mysql> select @@validate_password_length;#查看参数值
    +----------------------------+
    | @@validate_password_length |
    +----------------------------+
    | 4 |
    +----------------------------+
    只要设置的值小于4都为4。
    这样就可以修改简单的密码了
    update user set authentication_string=password('密码:root') where user='root';
    flush privileges;
    退出:quit
    重启服务:service mysqld restart
    进入mysql
    mysql -u root -proot
    成功!
    3 windows:

    进入mysql安装目录,复制my-default.ini,命名为my.ini


    编辑my.ini
    在[mysqld]下添加skip-grant-tables
    保存。

    重启mysql:1、net stop mysql 2、net start mysql
    进入mysql
    mysql -u root -p
    不用输入密码,直接回车
    输入use mysql
    修改root的密码
    update user set authentication_string=password('新密码') where user='root';
    flush privileges;
    退出:quit
    再次重启mysql:1、net stop mysql 2、net start mysql
    测试是否成功就是是否登陆成功咯。
    mysql -u root -p<新密码>
    完成!

  • 相关阅读:
    什么是php面向对象及面向对象的三大特性
    php类的定义与实例化方法
    php面向对象之$this->用法简述
    url的主要功能是什么
    PHP字符串比较函数详解
    PHP截取字符串函数substr()函数实例用法详解
    php 读取文件
    php 正则达达示中的模式修正符
    php正则表示中的元字符
    php 正则表达示中的原子
  • 原文地址:https://www.cnblogs.com/forforever/p/12650282.html
Copyright © 2020-2023  润新知