mysql修改完密码无法再次登陆

现象:修改完root密码之后,退出mysql,重启mysql服务,然后想用新密码登陆mysql,发现登不上去了。

一,碰到这种问题的原因是,在给用户改密码的时候没有使用password()函数对密码加密。如下:

mysql> update user set password=‘[email protected]‘ where user=‘root‘;
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3 Changed: 3 Warnings: 0

mysql> quit

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

使用select查询mysql库里的user表,可以发现在user表中,密码都是以加密的形式存在的。

mysql> select * from user where user="root";

....

| localhost | root | *A00C34073A26B40AB4307650BFB9309D6BFA6999 | Y           | Y           | Y           | Y

....

如果直接指定‘set password=‘[email protected]‘ ,mysql就会认为‘[email protected]‘是一个加密后的字符串,所以与这个加密字符串对应的

密码自然不是‘[email protected]‘了,而是另外一个位置的值。

正确的修改root密码的命令应该是

mysql> update user set password=password(‘[email protected]‘) where user=‘root‘;

二,现在知道原因了。但是我们登不上数据库,怎么办呢。解决方法如下:

1,找到当前数据库进程,并将其杀死

2,进入到mysql的安装目录,进入到bin目录,执行mysqld_safe --skip-grant-tables (默认安装路径/usr/local/mysql/bin)

经过这一步,mysql服务就会以一种忽略用户权限的方式启动,就能使用mysql进行无密码登陆了。可以通过ps aux | grep mysql查看服务已经启动

3,重新打开一个控制台,再次执行‘mysql‘命令,这次可以无密码登陆了

4,使用正确的命令重新修改密码

5,使用密码登陆,OK了

6,最好使用以下命令刷新一下系统权限(不然别人还可以无密码登陆)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

时间: 2024-10-12 21:47:40

mysql修改完密码无法再次登陆的相关文章

mysql 修改用户密码

修改mysql用户密码 目录 mysqladmin命令 UPDATE user 语句 SET PASSWORD 语句 root密码丢失的情况(待验证) mysqladmin命令(回目录) 格式如下(其中,USER为用户名,PASSWORD为新密码): mysqladmin -u USER -p password PASSWORD 该命令之后会提示输入原密码,输入正确后即可修改.例如,设置root用户的密码为123456,则 mysqladmin -u root -p password 12345

mysql修改数据库密码

mysql修改数据库密码:5.7版本数据库在安装时日志中会显示密码cat /var/log/mysqld.log | grep password 登录时提示修改密码:mysql> show databases;ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.简单密码不可以设置:mysql> alter user 'root'@'

MySQL 修改用户密码及重置root密码

为数据库用户修改密码是DBA比较常见的工作之一.对于MySQL用户账户的密码修改,有几种不同的方式,推荐的方式使用加密函数来修改密码.本文主要描述了通过几种不同的方式来修改用户密码以及mysql root账户密码丢失(重置root密码)的处理方法. 1.密码修改的几种方法 a.可以在创建用户的时候指定密码,以及直接使用grant创建用户的时候指定密码. 对于已经存在的用户直接使用grant方式也可以修改密码 如下: --演示版本 [email protected][(none)]> show v

mysql 修改root 密码

找到 mysql 的启动配置文件    windows 下面是 my.ini ,Linux 下面叫 my.cnf ,linux下面如果没有特别指定目录,则 my.cnf 一般存放于 /etc/ 目录下面.2. 修改 mysql 配置文件    在配置文件中找到 [mysqld] 一行,在下面添加 skip-grant-tables 后保存该文件并退出.3. 重新启动 mysql 数据库4. 重置 mysql 的 root 密码    方法一:使用 " 路径/mysql -h hostname(你

mysql修改用户密码

在mysql数据库系统当中 我们修改用户密码一共有三种方式 第一种:SET PASSWORD 方式 # 修改当前登录客户端用户密码  mysql> SET PASSWORD=PASSWORD('123456789'); Query OK, 0 rows affected (0.00 sec) # 指定用户进行修改 'root'@'localhost' # mysql用户名组成比较特殊 '用户名'@'主机名' mysql> SET PASSWORD FOR 'root'@'localhost' 

linux下mysql修改root密码

方法一:用set password命令 首先登录MySQL: mysql -u root -p 然后执行set password 命令: mysql> set password for [email protected] = password('654321'); 上面例子,将root密码更改为654321 或set password for 'root'@'%'=password('newpasswd') 方法二:使用mysqladmin 格式为:mysqladmin -u用户名 -p旧密码

mysql 修改root密码的3种方式

1.mysqladmin -u root -h host -p password "newpassword" 2.使用root 账号登录上MySQL  执行>set password=password("newpassword"); 3.使用root账号登录上MySQL 执行> update user set password=password("newpassword") where User="root" an

mysql修改root密码和设置权限

整理了以下四种在MySQL中修改root密码的方法,可能对大家有所帮助! 方法1: 用SET PASSWORD命令 mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass'); 方法2:用mysqladmin mysqladmin -u root password "newpass" 如果root已经设置过密码,采用如下方法 mysqladmin -u root password o

Windows中MySQL——修改root密码的4种方法

方法1: 用SET PASSWORD命令 首先登录MySQL. 格式:mysql> set password for 用户名@localhost = password('新密码'); 例子:mysql> set password for [email protected] = password('123'); 方法2:用mysqladmin 格式:mysqladmin -u用户名 -p旧密码 password 新密码 例子:mysqladmin -uroot -p123456 password