Blackaay-blog
主页
(current)
拿来就用:新增一个MySQL数据库用户并配置权限
创建于: 浏览量:353
> 最小权限原则 以前,一般自己的web应用或是开发的项目,正式上线后,使用的数据库用户仍然是root用户。一开始并没有觉得有什么不妥,想到有复杂的密码,应该不会有什么问题。后面在了解了更多MySQL的常识后,(这里说是常识,因为越深入了解,发现自己缺少的知识越多,很多知识真的是必须了解的基础知识,常识),这里面还是会有隐患存在。在MySQL数据库下,会有支持我们业务的数据库,也会有一些其他的数据库,这些数据库在你建立了一个空的MySQL时它们就是存在的,不知道你们有没有注意到。 在名为mysql的默认数据库中,会有5个系统表,它们分别是:mysql.user, mysql.db, mysql.host, mysql.tables_priv 和 mysql.columns_priv。这些表中存储着有关当前MySQL数据库中的用户、权限信息,修改这些表,可以增加新的用户,并配置想要的权限。如果我们开放root权限给web用户,这些表对于web用户而言是超出业务范围的无用表,不仅无用,如果这几张表被web用户通过某些方法纂改,就会引发安全问题。 上面的安全隐患,之所以会存在,是没有考虑到计算机系统中的“最小权限原则”。最小权限原则是指:**一个用户(或者一个进程)应该拥有能够执行分配给他的任务的最低级别的权限**。下面是在linux下新建一个MySQL用户,并为其配置权限的方法。 > 拿来就用 在linux中,以超级管理员身份登陆MySQL ``` mysql -u root -p //linux登陆MySQL命令 password: //输入密码 ``` 使用GRANT命令新增MySQL用户并配置权限: 以下为GRANT命令基本格式 ``` GRANT privileges [columns] //privileges表示权限,多权限以逗号隔开 ON item //item表示新权限应用于的数据库或表 TO user_name [IDENTIFIED by 'password'] //user_name用户名 user_name@localhost可以限定主机名 password 密码 [REQUIRE ssl_options] //是否需要加密套接字连接、或指定其他ssl选项 [with [GRANT OPTION | limit_options]] //允许指定的用户像别人授予自己的权限 ``` privileges,权限都有:select , insert , update , index(拖动索引) , alter(更改表结构),create,drop。 下面举几个例子: ``` //创建用户Tom,并为其授予全部数据库的全部权限 grant all on * to Tom identified by '123abc';//MySQL命令以‘;’结尾 ``` ``` //创建用户Jack,使其在本服务器登陆时,对web数据库可以进行select,insert,update操作 grant select,insert,update on web.* to Jack@localhost identified by 'abc123'; ``` ``` //删除Jack对web数据库的drop权限 revoke drop //revoke all就是删除所有权限 on web* from Jack; ``` ``` //删除用户 revoke all privileges,grant from Jack; ``` 这里挖个坑,后续会有更多详细说明MySQL的基础操作的博客...