MySQL(三)

用户管理

相关数据库和表

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

用户账号

格式:'USERNAME'@'HOST'        如:wenzi@'192.168.28.10'

HOST支持通配符:% 和 _        如:wenzi@'192.168.28.%'

创建用户

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

mysql> create user wenzi@'localhost' identified by 'Admin.';

新建用户的权限默认为:USAGE

重命名用户

RENAME USER old_user_name TO new_user_name;

mysql> rename user wenzi@'localhost' to zs@'192.168.28.10';

删除用户

DROP USER 'USERNAME'@'HOST'

删除默认的空用户:DROP USER ''@'localhost';

mysql> drop user zs@'192.168.28.10';

用户密码

早期MySQL版本密码存储在mysql.user的password字段;从MySQL5.7开始,password字段被废弃,使用authentication_string字段。若这两个字段都保存了密码,则authentication_string优先。

密码插件

MySQL5.7以前版本

默认密码验证插件是 mysql_native_password

MySQL 5.7 及以后版本

默认密码验证插件变为 caching_sha2_password

MariaDB 10.1.12 以前版本

默认密码验证插件是 mysql_native_password

MariaDB 10.1.12 及以后版本

默认密码验证插件变为 caching_sha2_password

通用修改密码语法

ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';

兼容问题

若要与旧版本的 MySQL 或 MariaDB ,在创建用户或更改用户密码时,可以通过 ALTER USER 语句指定密码验证插件。例如:

ALTER USER 'root'@'localhost' IDENTIFIED WITH 'mysql_native_password' BY 'new_password';

若alter user 语句不能使用,可以使用如下通用语法,且无需指定密码验证插件

SET PASSWORD FOR 'username'@'host' = PASSWORD('new_password');

或非交互式修改

mysqladmin -u root -p password 'new_password'

忘记管理员密码的解决办法

mysql 或 mariadb 通用

1、编辑配置文件

vim /etc/my.cnf
[mysqld]
skip-grant-tables  
skip-networking

2、登入数据库,修改密码

mysql    此时是无视密码,可直接登录数据库
alter user root@'localhost' identified by 'newpassword';

3、退出数据库,注释配置文件中的选项

vim /etc/my.cnf
[mysqld]
#skip-grant-tables  
#skip-networking

4、重启数据库,验证

systemctl restart mysqld

权限管理

权限级别

Global level:所有库,所有表的权限

Database level:某个数据库中所有表的权限

Table level:某个数据库中某个表的权限

Column level:表中某个字段的权限

授权

grant 权限列表 on 权限范围 to ‘用户名’@’客户端主机’ [with grant option];

权限列表

all为所有权限,select为查询权限,update为更新权限,insert为新增权限;

多个权限间用英文逗号,隔开

权限范围

库名.表名

*.*:所有库所有表

库名.*:某个库下所有表

库名.表名:某个库下某个表

with grant option

被授权的用户可以将自己的权限赋予其它用户

授予用户someuser从somehost主机连接到MySQL数据库时,对mydb数据库中的mytbl表的
col1列执行SELECT操作,对col1和col2列执行INSERT操作
GRANT SELECT (col1),INSERT (col1,col2) ON mydb.mytbl TO 'someuser'@'somehost';

授予用户root从10.0.0.%主机范围连接到MySQL数据库时,对所有数据库和所有表具有所有权限,
且可以将其权限授予其他用户
GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.0.0.%'  WITH GRANT OPTION;

取消权限

REVOKE 权限列表 ON 权限范围 FROM 用户名@‘客户端主机’;

取消用户所有权限

REVOKE ALL PRIVILEGES ON *.* FROM 用户名@’主机地址’;

查看权限

查看自己权限

show grants;

查看指定用户权限

show grants for zhangsan@’192.168.174.132′;

刷新权限

FLUSH PRIVILEGES;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值