赞
踩
首先项目中肯定不能使用root账户,root用户只有运维人员才能使用,因此需要创建一个用于项目中的账户。
create user 'userchpay'@'%' IDENTIFIED BY 'hyok^12(--m$pyuik';
一个新创建的用户没有任何权限,不能进行任何操作。
现在需要它只能对业务数据库进行增,删,改,查。
主要的权限
ALL: 所有可用的权限
CREATE: 创建库、表和索引
LOCK_TABLES: 锁定表
ALTER: 修改表
DELETE: 删除表
UPDATE: 更新数据
INSERT: 插入表或列
SELECT: 检索表或列的数据
CREATE_VIEW: 创建视图
SHOW_DATABASES: 列出数据库
DROP: 删除库、表和视图
赋权语句
GRANT <privileges> ON <database>.<table> TO 'userchp'@'%';
<privileges>
代表着用逗号分隔的权限列表,可以使用all privileges
赋予全部权限。
如果你想要将权限赋予任意数据库(或表),那么使用星号(*)来代替数据库(或表)的名字。例如
grant update,delete,insert,select ON chpay.* TO 'userchpay'@'%';
%
表示所有IP都可以登录,可以指定IP才能登录,在mysql中一对'A'@'B'
为一条记录,也就是一个用户,例如
grant all privileges ON chpay.* TO 'userchpay'@'111.111.111.111';
会提示用户'userchpay'@'111.111.111.111'
不存在,因此不管是换了用户名还是换了IP都是算新用户,可以直接使用命令来创建用户,密码和授权
grant all privileges on chpay.* to 'userchpay'@'111.111.111.111' identified by 'yourpassword' with grant option;
验证给用户赋予的权限
show grants for 'userchpay'@'%';
移除权限
revoke <privileges> ON <database>.<table> FROM 'userchpay'@'%';
刷新权限使其生效
FLUSH PRIVILEGES;
删除用户
drop user 'userchpay'@'%';
现在,我们如果想给userchpay
增加登录的IP白名单,也就是只有指定的IP可以登录进,要怎么做呢?
打开mysql库下的user表就知道,Host与User是一对的,然后后面跟着一堆权限项目,所以我的操作如下
先要将这一对删掉
drop user 'userchpay'@'%';
然后创建新的一对,并设置上权限,如果有多个IP,那么就多操作几次即可。
create user 'userchpay'@'111.111.111.111' IDENTIFIED BY 'hyok^12(--m$pyuik';
grant update,delete,insert,select ON chpay.* TO 'userchpay'@'111.111.111.111';
你甚至可以直接操作mysql下的user表来达到效果。
最后
FLUSH PRIVILEGES;
此处需要注意一点,默认的 root 是包含 127.0.0.1
和localhost
两个记录的,我们在本机命令行mysql -uroot -p
只能匹配到localhost
,而 mysql -h127.0.0.1 -uroot -p
只能匹配到127.0.0.1
,处于方便考虑,root + localhost
和 root + 127.0.0.1
都应该保留。
修改账户密码
set password for 'root'@'localhost' = password('hyok^12~--m$pyuik');
set password for 'root'@'127.0.0.1' = password('hyok^12~--m$pyuik');
set password for 'root'@'%' = password('hyok^12~--m$pyuik');
flush privileges;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。