MYSQL用户管理、权限管理

用户管理

元数据数据库:mysql

系统授权表:
db, host, user
columns_priv, tables_priv, procs_priv, proxies_priv

用户账号:
‘USERNAME’@‘HOST’
@‘HOST’:主机名,IP地址或Network
通配符: % _
示例:192.168.%.%

创建用户
CREATE USER ‘USERNAME’@‘HOST’ [IDENTIFIED BY ‘password’];
默认权限:USAGE

用户重命名
RENAME USER old_user_name TO new_user_name;

删除用户
DROP USER ‘USERNAME’@'HOST‘

示例:删除默认的空用户
DROP USER ‘’@‘localhost’;

修改密码
8.0版本:
ALTER USER “root”@“localhost” IDENTIFIED BY “test”;
如果你没有修改认证方式,8.0版本默认的密码加密方式是:caching_sha2_password,而现在很多客户端工具还不支持这种加密方式
连接时候就会报错:client does not support authentication protocol requested by server; consider upgrading MySQL client

解决方法
1.加上 WITH mysql_native_password
ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘test’;
2.在配置文件中指定默认认证方式
[mysqld]
default_authentication_plugin=mysql_native_password

5.5版本:
SET PASSWORD FOR ‘user’@‘host’ = PASSWORD(‘password’);
UPDATE mysql.user SET password=PASSWORD(‘password’)
WHERE clause;

此方法需要执行下面指令才能生效:
FLUSH PRIVILEGES;

#mysqladmin -u root -poldpass password ‘newpass’

忘记管理员密码的解决办法:
1.关闭mysqld进程
2.添加选项选项:
skip-grant-tables
skip-networking
3.使用UPDATE命令修改管理员密码
4.关闭mysqld进程,移除上述两个选项,重启mysqld

权限管理

权限类别
管理类
程序类
数据库级别
表级别
字段级别

管理类:
CREATE TEMPORARY TABLES
CREATE USER
FILE
SUPER
SHOW DATABASES
RELOAD
SHUTDOWN
REPLICATION SLAVE
REPLICATION CLIENT
LOCK TABLES
PROCESS

程序类:
FUNCTION
PROCEDURE
TRIGGER
CREATE
ALTER
DROP
EXCUTE

库和表级别:
DATABASE
TABLE
ALTER
CREATE
CREATE VIEW
DROP
INDEX
SHOW VIEW
GRANT OPTION:能将自己获得的权限转赠给其他用户

数据操作:
SELECT
INSERT
DELETE
UPDATE

字段级别:
SELECT(col1,col2,…)
UPDATE(col1,col2,…)
INSERT(col1,col2,…)

所有权限:
ALL PRIVILEGES 或 ALL

授权
GRANT priv_type [(column_list)],… ON [object_type] priv_level TO ‘user’@‘host’
[WITH GRANT OPTION];
priv_type: 权限,简单粗暴填ALL就有全部权限
object_type:作用对象,比如表
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 SELECT (col1), INSERT (col1,col2) ON test.aat TO'tuser'@'localhost'
授权tuser@'localhost'用户在test库中的aat表权限
可查询col1列的数据,插入col1和col2字段的数据

回收授权
REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] … ON
[object_type] priv_level FROM user [, user] …

示例:

REVOKE DELETE ON test.* FROM tuser@'localhost';
删掉delete权限

查看指定用户获得的授权
Help SHOW GRANTS
SHOW GRANTS FOR ‘user’@‘host’;
SHOW GRANTS FOR CURRENT_USER[()];

进程启动时会读取mysql库中所有授权表至内存
(1) GRANT或REVOKE等执行权限操作会保存于系统表中,服务进程通常会自动重读授权表,使之生效
(2) 对于不能够或不能及时重读授权表的命令,可手动让MariaDB的服务进程重读授权表:FLUSH PRIVILEGES;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值