VPS测评 VPS推荐 VPS优惠
Linux运维

MYSQL的用户管理和权限设置

MySQL 用户管理

相关数据库和表

  • 元数据数据库:mysql
  • 系统授权表:db,host,user,columns_priv,tables_priv,procs_priv,proxies_priv

用户帐号

'USERNAME'@'HOST'

HOST支持通配符

root@192.168.1.%

创建用户

CREATE USER 'USERNAME'@'HOST' [IDENTIFIED BY 'password'];

用户重命名

RENAME USER old_user_name TO new_user_name;

删除用户

DROP USER 'USERNAME'@'HOST';

范例:删除默认的空用户

DROP USER ''@'localhost';

MYSQL怎么修改用户密码:

新版mysql中用户密码可以保存在mysql.user表的authentication_string字段中。
如果mysql.user表的authentication_string和password字段都保存密码,authentication_string优先生效。

方法1:将密码123456加密后存放在mysql.user表中

set password for root@'localhost'='123456';

方法2:通用改密码方法

ALTER USER root@'localhost' IDENTIFIED BY '123456';

MYSQL忘记root密码的破解方法:

在MYSQL服务端配置文件中添加以下选项

[mysqld]
skip-grant-tables

重启服务

systemctl restart mysqld

随便用一个不存在的用户登录数据库(不要用root)

mysql -uaaa

刷新权限

flush privileges;

修改root密码

ALTER USER root@'localhost' IDENTIFIED BY '12345678';

最后把刚才的配置文件注释掉

[mysqld]
#skip-grant-tables

重启服务,正常登录

systemctl restart mysqld
mysql -uroot -p12345678

授权GRANT

GRANT priv_type [(column_list)],... ON [object_type] priv_level TO 'user'@'host'
[IDENTIFIED BY 'password'] [WITH GRANT OPTION];

priv_type: ALL [PRIVILEGES]
object_type:TABLE | FUNCTION | PROCEDURE
priv_level: *(所有库) |*.* | db_name.* | db_name.tbl_name | tbl_name(当前库的表) | db_name.routine_name(指定库的函数,存储过程,触发器)

with_option: GRANT OPTION
| MAX_QUERIES_PER_HOUR count
| MAX_UPDATES_PER_HOUR count
| MAX_CONNECTIONS_PER_HOUR count
| MAX_USER_CONNECTIONS count

范例:

GRANT ALL ON wordpress.* TO wordpress@'10.0.0.%';

注:创建用户和授权同时执行的方式在MySQL8.0取消了

取消权限REVOKE

REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ... ON
[object_type] priv_level FROM user [, user] ...

范例:

REVOKE DELETE ON *.* FROM 'testuser'@'10.0.0.%';

查看MYSQL用户的权限

SHOW GRANTS FOR 'user'@'host';
SHOW GRANTS FOR CURRENT_USER[()];

MYSQL通常会自动重读授权表,使之生效。对于不能及时重读授权表的,可以执行以下命令手动读取。

FLUSH PRIVILEGES;
未经允许不得转载:青蛙主机 » MYSQL的用户管理和权限设置

VPS相关常用工具

PING测试工具自用毛子接码站