36、mysql用户管理

用户账号管理

创建账号

CREATE USER username@hostname

  [

      IDENTIFIED BY [PASSWORD] 'password'

  ]

主机也可以使用通配符:testuser@'192.168.100.1_ _'

表示可以使用100.100-100.199

  

CREATE USER 'testuser'@'192.168.%.%' IDENTIFIED BY 'testpass';

查看用户能够使用的权限

SHOW GRANTS FOR 'testuser'@'192.168.%.%';

重命名账号

RENAME USER old_user TO new_user

  [, old_user TO new_user] ...

RENAME USER 'testuser'@'192.168.%.%' TO 'myuser'@'192.168.130.%';

重置密码

SET PASSWORD [FOR user] = PASSWORD('auth_string')

SET PASSWORD FOR 'myuser'@'192.168.130.%' = PASSWORD('mypass');

删除账号

DROP USER 'myuser'@'192.168.130.%';

权限管理:

GRANT(授予权限)

    priv_type [(column_list)]

      [, priv_type [(column_list)]] ...

    ON [object_type] priv_level

    TO user_specification [, user_specification] ...

    [REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}]

    [WITH with_option ...]


priv_type 

管理类权限

create temporary tables 创建临时表

create user 创建用户

file 允许用户读或者写某些文件

lock tables 添加显式锁

process 查看用户的线程

reload 相当于执行flush和reset

replication client 查询有哪些复制客户端

replication slave 赋予用户复制权限

show databases

shutdown

super

数据库访问权限

alter 修改表

alter routine 存储历程

create 创建库和表

create routine 存储过程,存储函数

create view 创建视图

delete 删除表行

drop 删除库和表

execute 执行存储过程,存储函数

grant option 将自己的权限复制给别的用户

index 创建删除索引

INSERT 插入数据

SELECT 查询数据

show view 查看视图如何被创建

update 更新数据


object_type:

    TABLE

  | FUNCTION

  | PROCEDURE


priv_level:

    *

  | *.*

  | db_name.*

  | db_name.tbl_name

  | tbl_name

  | db_name.routine_name


user_specification:

    user

    [

        IDENTIFIED BY [PASSWORD] 'password'

      | IDENTIFIED WITH auth_plugin [AS 'auth_string']

    ]


ssl_option:

    SSL

with_option:

    GRANT OPTION 转赠给别人

  | MAX_QUERIES_PER_HOUR count 每小时允许执行的最大查询次数

  | MAX_UPDATES_PER_HOUR count 每小时允许执行的最大更新次数

  | MAX_CONNECTIONS_PER_HOUR count         每小时允许执行的最大连接次数

  | MAX_USER_CONNECTIONS count 使用同一个账号可以同时连接的次数


  要想创建库应该对所有表都有权限


REVOKE(收回授权)

    priv_type [(column_list)]

      [, priv_type [(column_list)]] ...

    ON [object_type] priv_level

    FROM user [, user] ...


    REVOKE ALL PRIVILEGES, GRANT OPTION

    FROM user [, user] ...


    REVOKE PROXY ON user

    FROM user [, user] ...


REVOKE CREATE ON testdb.tb1 FROM 'tuser'@'192.168.%.%'; 


几个跟用户授权相关的表:

    db:库级别的权限

    host:主机级别权限,已废弃

    tables_priv:表级别权限

    colomns_priv:列级别的权限

    procs_priv:存储过程和存储函数相关的权限

    proxies_priv:代理用户权限·


练习:

1、授权testuser能够通过192.168.0.0/16网络内的任意主机访问当前mysql服务器的权限

GRANT ALTER ON *.* TO 'testuser'@'192.168.%.%' IDENTIFIED BY 'testpass';


2、让此用户能够创建和删除testdb数据库,及库中的表

GRANT CREATE,DROP ON testdb.* to 'testuser'@'192.168.%.%';


3、让此用户能够在testdb库中的t1表中执行查询、删除、更新和插入操作

GRANT SELECT,UPDATE,INSERT,DELETE ON testdb.t1 TO 'testuser'@'192.168.%.%';


4、让此用户能够在testdb库上创建和删除索引

GRANT INDEX ON testdb.* TO 'testuser'@'192.168.%.%';


5、让此用户能够在testdb.t2表上查询id和name字段,并允许其将此权限传授予其他用户

GRANT SELECT(id,name) ON testdb.t2 TO 'testuser'@'192.168.%.%';

GRANT GRANT OPTION ON testdb.t2 TO 'testuser'@'192.168.%.%';  


猜你喜欢

转载自blog.51cto.com/kaiyuandiantang/2315757