数据库是信息系统中非常重要的一个环节,合理高效的对其进行管理是非常重要的工作。通常由管理员创建不同的管理账户,然后给予不同的操作权限,把这些账户交给相应的管理人员使用。
在mysql数据库中,所有的用户信息都被保存在mysql库的user表中

mysql> use mysql;
mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
|··· //省略部分表           |
| user                      |
+---------------------------+
31 rows in set (0.00 sec)

管理管理用户

通过对user表的添加、修改、删除可以管理mysql的用户,使用CREATE创建新用户,DROP删除用户,SET修改用户密码。

用户的添加、删除

  • 明文添加新用户
    create user 'zhangsan'@'localhost' identified by '123456';
    //创建新用户’zhangsan‘允许在本地登陆(可以更改为其他的IP地址)密码为123123
  • 密文添加新用户
    mysql> select password ('123123');  //生成密文字符串
    +-------------------------------------------+
    | password ('123123')                       |
    +-------------------------------------------+
    | *E56A114692FE0DE073F9A1DD68A00EEB9703F3F1 |
    +-------------------------------------------+
    1 row in set, 1 warning (0.01 sec)
    mysql> create user 'lisi'@'localhost' identified by password '*E56A114692FE0DE073F99A1DD6
          //密文创建新用户
  • 查询新添加的用户
    select user,authentication_string,host from user;   //查询user表中的用户、密码、主机三列数据

    MySQL(mysql 5.7)用户密码的管理

  • 删除用户
    drop user 'zhangsan'@'localhost';

    用户密码修改

  • 使用SET命令修改用户密码
    set password=password('123123');  //修改当前登陆用户密码
    set password for 'lisi'@'localhost'=password('123456');  //修改其他用户密码

    遗忘root密码的解决方法

  • 先关闭正在运行中的MySQL进程
    systemctl stop mysqld.service 
    netstat -ntap | grep 3306     //查询不到3306端口信息,则表示mysql进程已结束
    killall mysqld     //**如果正常的停止命令无法关闭进程,则可使用该命令

    MySQL(mysql 5.7)用户密码的管理

  • 使用跳过user表验证的方式登陆
    mysqld --skip-grant-tables   
  • 更改密码
    输入上一条命令后重新打开新的终端登陆
    mysql -u root   //新终端登陆
    update mysql.user set authentication_string=password('abcabc') where user='root';
    //更改用户表(user)中的密码项
    flush privileges;    //刷新,刷新之后方能使用新密码登陆系统