zoukankan      html  css  js  c++  java
  • mysql权限操作(转)

    慢慢看吧
    mysql中可以给你一个用户授予如select,insert,update,delete等其中的一个或者多个权限,主要使用grant命令,用法格式为: 
    grant 权限 on 数据库对象 to 用户 
    一、grant 普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利。 
    grant select on testdb.* to common_user@’%’ 
    grant insert on testdb.* to common_user@’%’ 
    grant update on testdb.* to common_user@’%’ 
    grant delete on testdb.* to common_user@’%’ 
    或者,用一条 MySQL 命令来替代: 
    grant select, insert, update, delete on testdb.* to common_user@’%’

    二、grant 数据库开发人员,创建表、索引、视图、存储过程、函数。。。等权限。 
    grant 创建、修改、删除 MySQL 数据表结构权限。 
    grant create on testdb.* to developer@’192.168.0.%’; 
    grant alter on testdb.* to developer@’192.168.0.%’; 
    grant drop on testdb.* to developer@’192.168.0.%’; 
    grant 操作 MySQL 外键权限。 
    grant references on testdb.* to developer@’192.168.0.%’; 
    grant 操作 MySQL 临时表权限。 
    grant create temporary tables on testdb.* to developer@’192.168.0.%’; 
    grant 操作 MySQL 索引权限。 
    grant index on testdb.* to developer@’192.168.0.%’; 
    grant 操作 MySQL 视图、查看视图源代码 权限。 
    grant create view on testdb.* to developer@’192.168.0.%’; 
    grant show view on testdb.* to developer@’192.168.0.%’; 
    grant 操作 MySQL 存储过程、函数 权限。 
    grant create routine on testdb.* to developer@’192.168.0.%’; -- now, can show procedure status 
    grant alter routine on testdb.* to developer@’192.168.0.%’; -- now, you can drop a procedure 
    grant execute on testdb.* to developer@’192.168.0.%’;

    三、grant 普通 DBA 管理某个 MySQL 数据库的权限。 
    grant all privileges on testdb to dba@’localhost’ 
    其中,关键字 “privileges” 可以省略。

    四、grant 高级 DBA 管理 MySQL 中所有数据库的权限。 
    grant all on *.* to dba@’localhost’

    五、MySQL grant 权限,分别可以作用在多个层次上。 
    1. grant 作用在整个 MySQL 服务器上: 
    grant select on *.* to dba@localhost; -- dba 可以查询 MySQL 中所有数据库中的表。 
    grant all on *.* to dba@localhost; -- dba 可以管理 MySQL 中的所有数据库 
    2. grant 作用在单个数据库上: 
    grant select on testdb.* to dba@localhost; -- dba 可以查询 testdb 中的表。 
    3. grant 作用在单个数据表上: 
    grant select, insert, update, delete on testdb.orders to dba@localhost; 
    4. grant 作用在表中的列上: 
    grant select(id, se, rank) on testdb.apache_log to dba@localhost; 
    5. grant 作用在存储过程、函数上: 
    grant execute on procedure testdb.pr_add to ’dba’@’localhost’ 
    grant execute on function testdb.fn_add to ’dba’@’localhost’

    六、查看 MySQL 用户权限 
    查看当前用户(自己)权限: 
    show grants; 
    查看其他 MySQL 用户权限: 
    show grants for dba@localhost;

    七、撤销已经赋予给 MySQL 用户权限的权限。 
    revoke 跟 grant 的语法差不多,只需要把关键字 “to” 换成 “from” 即可: 
    grant all on *.* to dba@localhost; 
    revoke all on *.* from dba@localhost;

    八、MySQL grant、revoke 用户权限注意事项 
    1. grant, revoke 用户权限后,该用户只有重新连接 MySQL 数据库,权限才能生效。 
    2. 如果想让授权的用户,也可以将这些权限 grant 给其他用户,需要选项 “grant option“ 
    grant select on testdb.* to dba@localhost with grant option; 
    这个特性一般用不到。实际中,数据库权限最好由 DBA 来统一管理。

    注意:修改完权限以后 一定要刷新服务,或者重启服务,刷新服务用:FLUSH PRIVILEGES。
    -------------------------------------------------------------------------------------------------------------------------------

    MySQL 默认有个root用户,但是这个用户权限太大,一般只在管理数据库时候才用。如果在项目中要连接 MySQL 数据库,则建议新建一个权限较小的用户来连接。

    在 MySQL 命令行模式下输入如下命令可以为 MySQL 创建一个新用户:

    1
    CREATE USER username IDENTIFIED BY 'password';

    新用户创建完成,但是此刻如果以此用户登陆的话,会报错,因为我们还没有为这个用户分配相应权限,分配权限的命令如下:

    1
    GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';

    授予username用户在所有数据库上的所有权限。

    如果此时发现刚刚给的权限太大了,如果我们只是想授予它在某个数据库上的权限,那么需要切换到root 用户撤销刚才的权限,重新授权:

    1
    2
    EVOKE ALL PRIVILEGES ON *.* FROM 'username'@'localhost';
    GRANT ALL PRIVILEGES ON wordpress.* TO 'username'@'localhost' IDENTIFIED BY 'password';

    甚至还可以指定该用户只能执行 select 和 update 命令:

    1
    GRANT SELECT, UPDATE ON wordpress.* TO 'username'@'localhost' IDENTIFIED BY 'password';

    这样一来,再次以username登陆 MySQL,只有wordpress数据库是对其可见的,并且如果你只授权它select权限,那么它就不能执行delete 语句。

    另外每当调整权限后,通常需要执行以下语句刷新权限:

    1
    FLUSH PRIVILEGES;

    删除刚才创建的用户:

    1
    DROP USER username@localhost;

    仔细上面几个命令,可以发现不管是授权,还是撤销授权,都要指定响应的host(即 @ 符号后面的内容),因为以上及格命令实际上都是在操作mysql 数据库中的user表,可以用如下命令查看相应用户及对应的host:

    1
    SELECT User, Host FROM user;
  • 相关阅读:
    uc浏览器开发版
    探索.NET中的事件机制
    “多态枚举”数值如何判断?
    关于“程序集与命名空间”
    AutoResetEvent和ManualResetEvent的异同
    C# 获取DOS命令的返回值
    自定义控件——自绘
    关于using……的一些探讨
    XmlDocument操作xml类
    使用Trigger实现Cascading的功能
  • 原文地址:https://www.cnblogs.com/roy-blog/p/9261737.html
Copyright © 2011-2022 走看看