用户权限管理创建用户命令:CREATE USER "username"@"host" IDENTIFIED BY "password";说明:Username所创建的用户名host 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%.password该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器.如: CREATE USER "pig"@"192.168.1.101_" IDENDIFIED BY "123456";注:创建用户时也可以向user表中添加用户信息实现添加用户。权限分配MySQL权限原则:权限控制主要是出于安全因素,因此需要遵循一下几个经验原则:1、只授予能满足需要的最小权限,防止用户越权。如用户只是需要查询,那就只赋予select权限,不要给用户赋予update、insert或者delete权限。2、创建用户的时候限制用户的登录主机,一般是限制成指定IP或者内网IP段。3、初始化数据库的时候删除没有密码的用户。安装完数据库的时候会自动创建一些用户,这些用户默认没有密码。4、为每个用户设置满足密码复杂度的密码。5、定期清理不需要的用户。回收权限或者删除用户。MySQL权限一览:
| 权限 | 权限级别 | 权限说明 |
| CREATE | 数据库、表或索引 | 创建数据库、表或索引权限 |
| DROP | 数据库或表 | 删除数据库或表权限 |
| GRANT OPTION | 数据库、表或保存的程序 | 赋予权限选项 |
| REFERENCES | 数据库或表 | |
| ALTER | 表 | 更改表,比如添加字段、索引等 |
| DELETE | 表 | 删除数据权限 |
| INDEX | 表 | 索引权限 |
| INSERT | 表 | 插入权限 |
| SELECT | 表 | 查询权限 |
| UPDATE | 表 | 更新权限 |
| CREATE VIEW | 视图 | 创建视图权限 |
| SHOW VIEW | 视图 | 查看视图权限 |
| ALTER ROUTINE | 存储过程 | 更改存储过程权限 |
| CREATE ROUTINE | 存储过程 | 创建存储过程权限 |
| EXECUTE | 存储过程 | 执行存储过程权限 |
| FILE | 服务器主机上的文件访问 | 文件访问权限 |
| CREATE TEMPORARY TABLES | 服务器管理 | 创建临时表权限 |
| LOCK TABLES | 服务器管理 | 锁表权限 |
| CREATE USER | 服务器管理 | 创建用户权限 |
| PROCESS | 服务器管理 | 查看进程权限 |
| RELOAD | 服务器管理 | 执行flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload等命令的权限 |
| REPLICATION CLIENT | 服务器管理 | 复制权限 |
| REPLICATION SLAVE | 服务器管理 | 复制权限 |
| SHOW DATABASES | 服务器管理 | 查看数据库权限 |
| SHUTDOWN | 服务器管理 | 关闭数据库权限 |
| SUPER | 服务器管理 | 执行kill线程权限 |
MySQL的权限如何分布,就是针对表可以设置什么权限,针对列可以设置什么权限等等,这个可以从官方文档中的一个表来说明:
| 权限分布 | 可能的设置的权限 |
| 表权限 | "Select", "Insert", "Update", "Delete", "Create", "Drop", "Grant", "References", "Index", "Alter" |
| 列权限 | "Select", "Insert", "Update", "References" |
| 过程权限 | "Execute", "Alter Routine", "Grant" |
MySQL权限控制:1、GRANT命令使用说明:创建一个只允许从本地登录的超级用户fog,并允许将权限赋予别的用户,密码为:test123mysql> grant all privileges on *.* to fog@"localhost" identified by "test123" with grant option;GRANT命令说明:ALL PRIVILEGES 是表示所有权限,你也可以使用select、update等权限。ON 用来指定权限针对哪些库和表。*.* 中前面的*号用来指定数据库名,后面的*号用来指定表名。TO 表示将权限赋予某个用户。fog@"localhost"表示fog用户,@后面接限制的主机,可以是IP、IP段、域名以及%,%表示任何地方。注意:这里%有的版本不包括本地,以前碰到过给某个用户设置了%允许任何地方登录,但是在本地登录不了,这个和版本有关系,遇到这个问题再加一个localhost的用户。IDENTIFIED BY 指定用户的登录密码。WITH GRANT OPTION 这个选项表示该用户可以将自己拥有的权限授权给别人。注意:经常有人在创建操作用户的时候不指定WITH GRANT OPTION选项导致后来该用户不能使用GRANT命令创建用户或者给其它用户授权。2、刷新权限使用这个命令使权限生效,尤其是你对那些权限表user、db、host等做了update或者delete更新的时候。以前遇到过使用grant后权限没有更新的情况,只要对权限做了更改就使用FLUSH PRIVILEGES命令来刷新权限。mysql> flush privileges;3、查看权限查看当前用户的权限:mysql> show grants;+---------------------------------------------------------------------+| Grants for root@localhost |+---------------------------------------------------------------------+| GRANT ALL PRIVILEGES ON *.* TO "root"@"localhost" WITH GRANT OPTION || GRANT PROXY ON ""@"" TO "root"@"localhost" WITH GRANT OPTION |+---------------------------------------------------------------------+查看某个用户的权限:mysql> show grants for "fog"@"%";4、回收权限mysql> revoke delete on *.* from "fog"@"localhost";5、删除用户mysql> drop user "fog"@"localhost";Query OK, 0 rows affected (0.01 sec)6、对账户重命名mysql> rename user "fog"@"%" to "jim"@"%";7、修改密码1、用set password命令mysql> SET PASSWORD FOR "root"@"localhost" = PASSWORD("123456");2、用mysqladmin[root@rhel5 ~]# mysqladmin -uroot -p123456 password 1234abcd格式:mysqladmin -u用户名 -p旧密码 password 新密码3、用update直接编辑user表mysql> use mysqlmysql> update user set PASSWORD = PASSWORD("1234abcd") where user = "root";mysql> flush privileges;
更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2015-07/119937p2.htm
关于move table和rebuild index批量操作的记录MySQL常见错误分析与解决方法总结相关资讯 MySQL操作规范 本文评论 查看全部评论 (0)