Mysql用户表初探

问题:

  1. Access denied for user 'root'@'localhost' (using password: YES)
  2. mysql修改密码,cmd命令行不生效
  3. cmd修改密码成功,登录不上
  4. ....
    以上种种问题大致都可以概括成对mysql的用户表不了解
先来看看mysql中user表的结构
Mysql用户表初探_第1张图片
Host列表示主机的链接方式
  1. host方式登录mysql
  2. 127.0.0.1 表示通过ip来连接登录mysql
  3. ::1 表示通过cmd方式来登录mysql
  4. localhost 表示通过字符localhost来指定本地主机登录mysql
  5. % 表示远程连接的方式登录mysql
以上四种方式是mysql安装后自动创建了,用户名均为root,密码为空

我们可以通过cdm的命令行查看当前mysql的账户密码( 需要先使用命令mysql -uroot -p ,密码为空登录 )如下

Mysql用户表初探_第2张图片

如果通过远程来登录mysql的话,需要使用sql语句修改host

update user set host = '%' where user = 'root';

此语句运行会报错,不用理会,再运行下面这条语句即可(此条语句非常重要,不运行,sql脚本不会生效!!!)

FLUSH PRIVILEGES;

通过命令行修改mysql密码的话,如下:

mysqladmin -uroot -p旧密码 password 新密码

如:

mysqladmin -uroot -p123 password 456

修改成功后,使用navicat可以查看修改的状态,如下


Mysql用户表初探_第3张图片

1.因为mysql修改密码回后经过加密再存入数据。2.因为此处修改的仅仅是通过cmd登陆的密码,所有远程登陆,和用ip登陆,localhost登陆的密码均不会发生改变。

当我们想把所有的登陆方式都设成统一的密码,通过如下sql语句即可(不过好像数据库不会加密再存入)

use mysql;
update user set password="123456" where user='root';

理解比较粗浅,如有高见,望指教。

你可能感兴趣的:(Mysql用户表初探)