mysql 5.7 修改用户密码

我之前安装数据库的时候,因为root生成的初始密码,修改的时候网上给出的很多答案都不能正常工作。所以自己总结了一下

用户操作

1.创建新用户
    -- 创建用户并赋予密码
    create user '用户名'@'主机' identified by '密码';
    mysql> create user 'test'@'localhost' identified by '111111';

    -- 创建用户不初始化密码
    create user '用户名'
    mysql> create user 'test1'
2.修改密码
    alter user [if exists] '用户'@'主机名' identified by '新密码'

    mysql> alter user 'test'@'localhost' identified by '123456';

    set  password for 'user' @'host' = password('password')
    mysql> set  password for 'test'  = password('111111')

我看到网上有些人说update mysql.user set authentication_string ='新密码' where user='用户名' 也可以修改密码,我只能说我试过了不行。因为authentication_string存储的是加密后的密码,我想mysql登陆的时候输入的密码应该也会先加密然后再经行密码比对,直接修改的话authentication_string的值是明文是无法匹配的。

3.删除用户

删除MySQL一个或多个账户及其权限。使用drop user 需要有创建用户或者删除数据库的权限。

drop user [if exists] '用户名'@'主机'   
drop user 'test'@'localhost'

注意:用户删除操作不会删除该用户之前创建的数据库或对象。这包括该用户创建的存储过程或视图

4.查询用户

mysql的用户信息保存在mysql数据库的user表中。需要提及的是mysql.user用一个复合主键,host和user。user@host会被分别放到user和host字段中。如果不写host则默认为%,表示所有ip都可以连接

-- 查询所有用户
select user from mysql.user;

user 表存储了MySQL数据库中所有用户基本信息以及权限信息。在5.7中没有password字段了,但是提供了authentication_string字段,这是加密后的密码

select user,authentication_string from mysql.user;

可以看到test用户有密码,test1没有密码

| test          | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| test1         |                                           |

用户分配表操作权限

之前说user表中保存一些权限信息,那是用户的操作权限,比如说select,delete,update等权限。但是刚创建的用户是没有操作其他已经存在数据库及表的权限,需要其他高级用户分配权限
给userName用户操作dbname数据库所有表的权限。

GRANT ALL ON dbname.* TO 'userName'@'host' 

给用户授予权限的一般语法

GRANT
    priv_type  ON [object_type] priv_level
    TO user [auth_option]  ...

priv_type:{//权限类型
    select,
    update,
    delete,
    ALL,
    ......
}

object_type: { //对象类型
    TABLE
  | FUNCTION
  | PROCEDURE
}

priv_level: { // 权限范围
    *
  | *.*
  | db_name.*
  | db_name.tbl_name
  | tbl_name
  | db_name.routine_name
}

user: //账户
    'username'@'host'

5.查询用户权限
show grants for '用户名'@'主机名'

猜你喜欢

转载自blog.csdn.net/yamadeee/article/details/79854469