db / 未分类 · 2015年5月22日

mysql创建用户以及授权

1.创建用户 ps 用户名一定要大于 4个字节
shell>mysql -uroot -p2240881 -e "CREATE USER evan IDENTIFIED BY '1234'";
mysql> CREATE USER evan IDENTIFIED BY '1234';
上面的两条命令是等效的,表示创建用户名为 evan ,密码 为 1234 并可以在任何地方登录,上面建立的用户可以在任何地方登陆。
如果要限制在固定地址登陆,比如localhost 登陆:
mysql> CREATE USER evan@localhost IDENTIFIED BY '1234';
2.授权
grant: #注意 其实这个就会创建用户的了,平时用这个比较多
grant select on 数据库.* to 用户名@登录主机ip identified by “密码”
grant all on 数据库.数据表名 to 用户名@登录主机ip identified by “密码”
mysql> GRANT ALL PRIVILEGES ON *.* TO user@localhost
grant all on dbname.tablename to user@login_host_ip identified by "password"

修改密码:
mysql> grant all privileges on pureftpd.* to evan@localhost identified by '2240';
mysql> flush privileges;
#增加一个用户dkmweb密码为evan,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、建表的权限。
grant select,insert,update,delete ,create on *.* to dkmwe@"localhost" identified by 'evan';
flush privileges;

查看用户信息:
mysql> select host,user from mysql.user
#查看数据库已经授权的用户
select user from mysql.db where db="dbname"
#查看用户和IP ,下面的例子是查看 下面的库有没有 对 19.145.130.1 的data授权,对烦人的数据中心的报警很有用
show grants for data@'19.145.130.1';
这样就能看此机 哪些库对 data@’19.145.130.1‘ 有授权
有关权限的一些知识
#创建用户并授权: data@204.152.2.2 并赋予数据库上所有表的 select 权限
grant select on *.* to data@204.152.2.2 identified by 'evan';
flush privileges;

#check
select * from mysql.user;
select * from mysql.db;
user 表中的每个权限都代表了对所有数据库都有的权限
db 表中的每个权限都代表了对指定数据库都有的权限
3.删除用户。
@>mysql -u root -p
@>密码
mysql>DELETE FROM user WHERE User="evan" and Host="localhost";
mysql>flush privileges;
4.修改指定用户密码。
@>mysql -u root -p
@>密码
mysql>update mysql.user set password=password(‘新密码’) where User=”phplamp” and Host=”localhost”;
mysql>flush privileges;
##20161101pm
1、GRANT命令使用说明:
先来看一个例子,创建一个只允许从本地登录的超级用户jack,并允许将权限赋予别的用户,密码为:jack.
mysql> grant all privileges on *.* to jack@'localhost' identified by "jack" with grant option;
Query OK, 0 rows affected (0.01 sec)
GRANT命令说明:
ALL PRIVILEGES 是表示所有权限,你也可以使用select、update等权限。
ON 用来指定权限针对哪些库和表。
*.* 中前面的*号用来指定数据库名,后面的*号用来指定表名。
TO 表示将权限赋予某个用户。
jack@’localhost’ 表示jack用户,@后面接限制的主机,可以是IP、IP段、域名以及%,%表示任何地方。注意:这里%有的版本不包括本地,以前碰到过给某个用户设置了%允许任何地方登录,但是在本地登录不了,这个和版本有关系,遇到这个问题再加一个localhost的用户就可以了。
IDENTIFIED BY 指定用户的登录密码。
WITH GRANT OPTION 这个选项表示该用户可以将自己拥有的权限授权给别人。注意:经常有人在创建操作用户的时候不指定WITH GRANT OPTION选项导致后来该用户不能使用GRANT命令创建用户或者给其它用户授权。
备注:可以使用GRANT重复给用户添加权限,权限叠加,比如你先给用户添加一个select权限,然后又给用户添加一个insert权限,那么该用户就同时拥有了select和insert权限。
2、刷新权限
使用这个命令使权限生效,尤其是你对那些权限表user、db、host等做了update或者delete更新的时候。以前遇到过使用grant后权限没有更新的情况,只要对权限做了更改就使用FLUSH PRIVILEGES命令来刷新权限。
grant select, insert, update, delete on testdb.* to common_user@'%'
grant all privileges on testdb to dba@’localhost’ 其中,关键字 “privileges” 可以省略
revoke 跟 grant 的语法差不多,只需要把关键字 “to” 换成 “from” 即可:
grant all on *.* to dba@localhost;
revoke all on *.* from dba@localhost;
ALTER 更改表,比如添加字段、索引等
查看当前用户的权限:
mysql> show grants;
查看某个用户的权限:
mysql> show grants for ‘jack’@’%’;
http://www.cnblogs.com/goodhacker/p/3373213.html
https://www.cnblogs.com/Richardzhu/p/3318595.html
权限分配 user ->db ->tables_priv-> columns_priv
见书p391
http://seawavecau.iteye.com/blog/282345