mysql用户设置密码


6.3.5 为用户设置密码
---------------------
mysql将密码存储在名为mysql的数据库中的user表里边;
赋予密码或者修改密码的操作只有有CREATE USER权限的用户才能执行;
或者,对于名为mysql的那个数据库有权限也可以(INSERT权限-创建新账号,UPDATE权限-修改已存在账号);
如果read_only这个系统变量开启了,使用诸如CREATE USER 或者SET PASSWORD 等修改账号的语句就需要超级权限了;

mysql将密码进行hash以后存储到mysql.user这个表里边;

创建新账号并赋予密码:
    mysql> CREATE USER 'jeffrey'@'localhost'
        -> IDENTIFIED BY 'mypass';
    对于CREATE USER语句,mysql在将密码存储到mysql.user这个表里边之前会对它自动进行hash;

给已经存在的账号设置密码或者修改已经存在的账号的密码:
    mysql> ALTER USER 'jeffrey'@'localhost'
        -> IDENTIFIED BY 'mypass';
    如果我们不是以匿名用户登录,我们修改自己的密码的时候,可以不用指定自己的用户名:
        mysql> ALTER USER USER()
            -> IDENTIFIED BY 'mypass';
    对于ALTER USER语法,mysql在将密码存储到mysql.user这个表里边之前会对它自动进行hash;

结合PASSWORD()函数使用SET PASSWORD:
    mysql> SET PASSWORD FOR 
        -> 'jeffrey'@'localhost' = PASSWORD('mypass');
    如果我们不是以匿名用户登录,我们修改自己的密码的时候,可以忽略掉FOR 语句:
        mysql> SET PASSWORD = PASSWORD('mypass');

    系统变量old_passwords的值决定了具体的hash方法,PASSWORD()函数根据这个hash方法对密码进行hash;
    如果SET PASSWORD以格式不对为由拒绝了PASSWORD()返回的经过hash密码值,那么可能要改old_passwords的值来更改hash算法;
    (对于mysql 5.7.6来说,不建议使用本方法,建议使用ALTER USER语法)

使用SET PASSWORD而不结合PASSWORD()函数:
    对于mysql5.7.6来说,SET PASSWORD将密码字符串解释为明文,然后经过合适的hash放到mysql.user这个表里边;
        mysql> SET PASSWORD FOR 
            -> 'jeffrey'@'localhost' = 'mypass';
    在mysql5.7.6之前,SET PASSWORD将密码字符串直接解释为hash密码值存放到mysql.user这个表里边(奇怪);
        mysql> SET PASSWORD FOR
            -> 'jeffrey'@'localhost' = '*6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4';
    The string must be hashed in the format required by the account authentication plugin. 
    A string not hashed appropriately causes client connections for the account to fail with an Access denied error.
    (ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number)

使用GRANT USAGE 语句在不影响账户当前权限的情况下修改账户的密码:
    mysql> GRANT USAGE ON *.* TO 'jeffrey'@'localhost'
        -> IDENTIFIED BY 'mypass';
    对于GRANT USAGE来说,mysql在将密码存储到mysql.user这个表里边之前会对它自动进行hash;
    (对于mysql5.7.6来说,不建议使用本方法,建议使用ALTER USER语法)

可以使用命令行修改账户密码:
    shell> mysqladmin -u user_name -h host_name password "new_password"
    对于使用mysqladmin 来说,mysql在将密码存储到mysql.user这个表里边之前会对它自动进行hash;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值