Èí¼þ¿ª·¢Åàѵ°à >> ±à³̿ª·¢ >> MySQL
mysql °²ȫ¹ÜÀíÏêÇé |
1、就按单介绍
换句话说,用户不能对过多的数据具有过多的访问权ã€?/p>
这些都只是例子,但有助于说明一个重要的事实,即你需要给用户提供他们所需的访问权,且仅提供他们所需的访问权ã€?/p> 这就是所谓的访问控制,管理访问控制需要创建和管理用户账号ã€?/p> 防止无意的错è¯?重要的是注意到,访问控制的目的不仅仅是防止用户的恶意企图ã€?/p> 数据梦魇更为常见的是无意识错误的结果,如错打MySQL语句,在不合适的数据库中操作或其他一些用户错误ã€?/p> 通过保证用户不能执行他们不应该执行的语句,访问控制有助于避免这些情况的发ç”?br /> 不要使用root 应该严肃对待root登录的使用。仅在绝对需要时使用它(或许在你不能登录其他管理账号时使用)ã€?/p> 不应该在日常çš?code>MySQL操作中使ç”?code>rootã€?br />
MySQL用户账号和信息存储在名为 为此,可使用以下代码ï¼?/strong> use mysql; SELECT USER FROM user;
user表有一个名ä¸?code>user的列,它存储用户登录名。新安装的服务器可能只有一个用户(如这里所示),过去建立的服务器可能具有很多用æˆ? 用多个客户机进行试验 试验对用户账号和权限进行更改的最好办法是打开多个数据库客户机(如 2、创建用æˆ?/h2>
CREATE USER ben IDENTIFIED by 'ben123456'; 这样就创建了一个用户ã€?/p> 指定散列口令 MySQL用来存储用户账号信息的表(以及表模式等)极为重要,对它们的任何毁坏都可能严重地伤害到MySQL服务器。因此,相对于直接处理来说,最好是用标记和函数来处理这些表 为重新命名一个用户账号,使用RENAME USER语句,如下所示: RENAME USER ben to zhangsan; MySQL 5之前 仅MySQL 5或之后的版本支持RENAME USER。为了在以前的MySQL中重命名一个用户,可使用UPDATE直接更新user表ã€?/p> 3、删除用户账å�?/h2>
DROP USER zhangsan; 注意:
4、访问权é™?/h2>在创建用户账号后,必须接着分配访问权限。新创建的用户账号没有访问权限。它们能登录MySQL,但不能看到数据,不能执行任何数据库操作ã€?/p> CREATE USER zhangsan IDENTIFIED by 'zhang123456'; 为看到赋予用户账号的权限,使ç”?code>SHOW GRANTS FORï¼?strong>如下所示: SHOW GRANTS FOR 'zhangsan'; 结果: GRANT USAGE ON *.* TO 'zhangsan'@'%' IDENTIFIED BY PASSWORD '*557661E2A88A816A3155408E5D15997A8C5C7D25' 显示没有任何权限ã€?/p> USAGEè¡?示根本没有权限(我知道,这不很直观),所以,此结果表示在任意数据库和任意表上对任何东西没有权限ã€?/p> 用户定义为user@host MySQL的权限用用户名和主机名结合定义。如果不指定主机名,则使用默认的主机å�?(授予用户访问权限而不管主机名ï¼?/p> 为设置权限,使用GRANT语句。GRANT要求你至少给出以下信息:
以下例子给出GRANT的用法: GRANT SELECT ON test.* to zhangsan; 然后: SHOW GRANTS FOR zhangsan; GRANT SELECT ON `test`.* TO 'zhangsan'@'%' 每个GRANT添加(或更新)用户的一个权限。MySQL读取所有授权,并根据它们确定权限ã€?/p>
REVOKE SELECT ON test.* FROM zhangsan; 这条REVOKE语句取消刚赋予用户bforta的SELECT访问权限。被撤销的访问权限必须存在,否则会出错ã€?/p> GRANT和REVOKE可在几个层次上控制访问权限:
示例: ALL 除GRANT OPTION外的所有权é™? ALTER 使用ALTER TABLE ALTER ROUTINE 使用ALTER PROCEDURE和DROP PROCEDURE CREATE 使用CREATE TABLE CREATE ROUTINE 使用CREATE PROCEDURE CREATE TEMPORARY TABLES 使用CREATE TEMPORARY TABLE CREATE USER 使用CREATE USER、DROP USER、RENAME USER和REVOKE ALL PRIVILEGES CREATE VIEW 使用CREATE VIEW DELETE 使用DELETE DROP 使用DROP TABLE EXECUTE 使用CALL和存储过ç¨? FILE 使用SELECT INTO OUTFILE和LOAD DATA INFILE GRANT OPTION 使用GRANT和REVOKE INDEX 使用CREATE INDEX和DROP INDEX INSERT 使用INSERT LOCK TABLES 使用LOCK TABLES PROCESS 使用SHOW FULL PROCESSLIST RELOAD 使用FLUSH REPLICATION CLIENT 服务器位置的访问 REPLICATION SLAVE 由复制从属使ç”? SELECT 使用SELECT SHOW DATABASES 使用SHOW DATABASES SHOW VIEW 使用SHOW CREATE VIEW SHUTDOWN 使用mysqladmin shutdown(用来关闭MySQLï¼? SUPER 使用CHANGE MASTER、KILL、LOGS、PURGE、MASTER 和SET GLOBAL。还允许mysqladmin调试登录 UPDATE 使用UPDATE USAGE 无访问权é™? 使用 未来的授æ�?在使用GRANT和REVOKE时,用户账号必须存在,但对所涉及的对象没有这个要求ã€?/p> 这允许管理员在创建数据库和表之前设计和实现安全措施ã€?/p> 这样做的副作用是,当某个数据库或表被删除时(用DROP语句),相关的访问权限仍然存在。而且,如果将来重新创建该数据库或表,这些权限仍然起作用ã€?/p> 简化多次授æ�?可通过列出各权限并用逗号分隔,将多条GRANT语句串在一起,如下所示: GRANT SELECT, INSERT ON test.* to zhangsan; 5、更改口ä»?/h2>为了更改用户口令,可使用SET PASSWORD语句。新口令必须如下加密ï¼?/strong>
SET PASSWORD FOR zhangsan = PASSWORD('zhangsan');
修改当前用户的口ä»?
SET PASSWORD = PASSWORD('root');
到此这篇关于mysql 安全管理详情的文章就介绍到这äº?更多相关mysql 安全管理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家ï¼?/p> |