day55-mysql-用户权限、修改秘密、忘记密码

1.用户权限:新创建的用户没有库,如果想让新用户访问我的库,必须给它授权才可以。我在使用的navicat要关闭新用户的连接才可以授权给它。
    1.创建用户
        create user 'hanshe'@'127.0.0.1' identified by '123';  -- 创建用户
    2.移除用户
        drop user 'hanshe'@'127.0.0.1' ; -- 移除用户(要先关闭连接)
    3.修改用户
        RENAME user 'hanshe'@'127.0.0.1'  to 'hanxiaoqiang'@'192.168.0.1' -- 修改用户
    4.查看授权
        show GRANTS for 'hanshe'@'127.0.0.1';-- 查看用户权限
    5.授权
        GRANT select,update ON db1.info to 'hanshe'@'127.0.0.1';-- 授权
        GRANT all PRIVILEGES on *.* to 'hanshe'@'127.0.0.1'; -- 授权所有权限,*.* 表示所有库所有表。
    6.移除授权
        REVOKE all PRIVILEGES on *.* FROM 'hanshe'@'127.0.0.1'; -- 移除权限
    7.主机开放权限给新用户:

        1create user 'test'@'%' identified by '123'; 主机创建新用户'test','%'表示所有IP地址(其他电脑)都可以访问主机,密码是123.

             GRANT all PRIVILEGES on *.*  to 'test'@'%';

             FLUSH PRIVILEGES; -- 刷新权限
        2、用户连接主机的方法:点连接--MySQL--连接名随便输(例如输入test1),主机名或IP地址要输入主机的ip地址192.168_____,用户名test,密码123--连接测试。
                                (用户电脑只有一个连接名test1)

        3、为了便于测试,需要本机连接本机,上面的'%'修改为'127.0.0.1'。
            点连接--MySQL--连接名随便输(例如输入test1,本机已有的连接名是focus),主机名或IP地址要输入localhost或127.0.0.1,用户名test,密码123--连接测试。
            连接成功之后,会有两个连接名:focus 和 test1,当你在test1当中修改数据之后,focus的数据也一样被修改。意味着用户修改了主机mysql数据库的数据。
        4、用户root是在安装mysql的时候设置的,它拥有所有权限,包括grant授权。
             而新用户获取了主机开放的所有权限(除了grant授权),只能使用它,无法把它复制给别的用户使用。            

    8.localhost、127.0.0.1 和 本机IP之间的区别:
        1、localhost等于127.0.0.1,不过localhost是域名,127.0.0.1是IP地址。
        2、localhost和127.0.0.1不需要联网,都是本机访问。
        3、本机IP需要联网,本机IP是本机或外部访问, 本机 IP 就是本机对外放开访问的IP地址,这个网址就是与物理网卡绑定的IP地址。
        
2.修改密码:我通过cmd操作方法一二三发生错误:connect to server at 'localhost' failed,所以无法修改密码。
    1.方式一:使用 mysqladmin 命令
        mysqladmin -u用户名 -p原密码 password 新密码;
        
    2.方式二:直接设置密码
        set password for 'hanshe'@'%' = password('166')

    3.方式三: 直接修改
        update mysql.user set password = password('123') where user ='hanshe' and host ='%'

        flush PRIVILEGES;
     5.7 版本
        update mysql.user set authentication_string = password('123456') where user ='test' and host ='%';

        flush PRIVILEGES;
    4.方式四:     可以使用navicat里面拥有修改权限的用户(例如root)连接mysql去修改其他用户的密码。

3.忘记密码:下面破解方法只限于本机,其他电脑是无法做到的。我的电脑报错,无法操作。
    在忘记root密码的时候,可以这样:
 
    #1.首先打开cmd 窗口,关闭mysql服务:net stop mysql 
 
    #2.然后跳过权限检查,启动mysql,输入命令:mysqld --skip-grant-tables
 
    #3.重新打开一个新的cmd窗口,启动客户端(已跳过权限检查,可以直接登录):mysql 
 
    #4.直接进来,修改密码:update mysql.user set authentication_string=password('123456') where user='root';
 
    #5. 刷新权限:flush privileges;
原文地址:https://www.cnblogs.com/python-daxiong/p/12191107.html