MySQL下添加用户以及给予权限的实现

在mysql中添加用户的方法如下:

1 使用root用户登录

mysql -u root -p

2  选择mysql数据库

use mysql

3  添加用户

insert into user(Host,User,Password)  values("localhost","你的用户名",password("你的密码"));

把汉字换成你想使用的用户名或密码

4 刷新MySQL的系统权限相关表

flush privileges;

给用户添加权限:

假设我现在数据库中有一个名字为ysou的数据库,有一个用户名为honest的用户,我想让honest拥有ysou中所有表的所有(增删改查)权限,

操作如下:

1 使用root用户登录

mysql -u root -p

2 添加权限

grant all on ysou.* to honest ;

3 退出root,使用honest登陆mysql,使用show databases既可以看到目前honest可以操作的表格,当然,,我们可以进入相应数据库进行操作。

 

 

mysql> UPDATE user SET password=PASSWORD("123") WHERE ;

mysql> FLUSH PRIVILEGES;

mysql> GRANT ALL ON mail.* TO  IDENTIFIED BY "456";

 

解决办法   grant all privileges on *.* to  identified by '1';

                  flush privileges;

 

附:

 mysql> grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’;


权限1,权限2,…权限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限。
当权限1,权限2,…权限n被all privileges或者all代替,表示赋予用户全部权限。
当数据库名称.表名称被*.*代替,表示赋予用户操作服务器上所有数据库所有表的权限。
用户地址可以是localhost,也可以是ip地址、机器名字、域名。也可以用’%'表示从任何地址连接。
‘连接口令’不能为空,否则创建失败。

 

mysql>grant select,insert,update,delete,create,drop on vtdc.employee to joe@10.163.225.87 identified by ‘123′;
给来自10.163.225.87的用户joe分配可对数据库vtdc的employee表进行select,insert,update,delete,create,drop等操作的权限,并设定口令为123。

mysql>grant all privileges on vtdc.* to joe@10.163.225.87 identified by ‘123′;
给来自10.163.225.87的用户joe分配可对数据库vtdc所有表进行所有操作的权限,并设定口令为123。

mysql>grant all privileges on *.* to joe@10.163.225.87 identified by ‘123′;
给来自10.163.225.87的用户joe分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。

mysql>grant all privileges on *.* to joe@localhost identified by ‘123′;
给本机用户joe分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。

 

GRANT 允许对象的创建者给某用户或某组或所有用户(PUBLIC)某些特定的权限.对象创建后,除了创建者外,除非创建者赋予(GRANT)权限,其他人没有访问对象的权限. 一旦用户有某对象的权限,他就可以使用那个特权.不需要给创建者赋予(GRANT)对象的权限,创建者自动拥有对象的所有权限,包括删除它的权限.

GRANT

名称

GRANT — 赋予一个用户,一个组或所有用户访问权限

GRANT privilege [, ...] ON object [, ...]

TO { PUBLIC | GROUP group | username }

输入

privilege

可能的权限有:

SELECT

访问声明的表/视图的所有列/字段.

INSERT

向声明的表中插入所有列字段.

UPDATE

更新声明的所有列/字段.

DELETE

从声明的表中删除所有行.

RULE

在表/视图上定义规则 (参见 CREATE RULE 语句).

ALL

赋予所有权限.

object

赋予权限的对象名.可能的对象是:

table (表)

view (视图)

sequence (序列)

index (索引)

PUBLIC

代表是所有用户的简写.

GROUP group

将要赋予权限的组 group .目前的版本中,组必须是用下面方法显式创建的.

username

将要赋予权限的用户名.PUBLIC 是代表所有用户的简写.

输出

CHANGE

如果成功,返回此信息.

ERROR: ChangeAcl: class "object" not found

如果所声明的对象不可用或不可能对声明的组或用户赋予权限.

注意

目前,要想在 Postgres 里面只赋予几列权限,你必须创建一个包含那几列的视图(view),然后把权限赋予那几个视图。

使用 psql \z 命令获取关于现存对象权限的更多信息:

 

Database = lusitania

 

+------------------+---------------------------------------------+

 

| Relation | Grant/Revoke Permissions |

 

+------------------+---------------------------------------------+

 

| mytable | {"=rw","miriam=arwR","group todos=rw"} |

 

+------------------+---------------------------------------------+

 

Legend:

 

uname=arwR -- privileges granted to a user

 

group gname=arwR -- privileges granted to a GROUP

 

=arwR -- privileges granted to PUBLIC

 

r -- SELECT

 

w -- UPDATE/DELETE

 

a -- INSERT

 

R -- RULE

 

arwR -- ALL

 

小技巧: 目前,要创建一个 GROUP (组), 你将不得不手工向表 pg_group 中插入数据,像:

 

INSERT INTO pg_group VALUES ('todos');

 

CREATE USER miriam IN GROUP todos;

 

参考 REVOKE 语句重新分配访问权限.

 

用法

 

给所有用户向表 films 插入记录的权限:

 

GRANT INSERT ON films TO PUBLIC;

 

赋予用户 manuel 操作视图 kinds 的所有权限:

 

GRANT ALL ON kinds TO manuel;

 

兼容性

 

 

SQL92
SQL92 GRANT 语法允许对表中的某单独列/字段设置权限,并且允许设置一权限以赋予别人相同权限.
GRANT privilege [, ...]
ON object [ ( column [, ...] ) ] [, ...]
TO { PUBLIC | username [, ...] } [ WITH GRANT OPTION ]
这些字段与 Postgres 实现是兼容的,除了下面一些例外: 
privilege 
SQL92 允许声明附加的权限:
SELECT 
REFERENCES 
允许在一个声明的表的整合约束中使用某些或全部列/字段. 
USAGE 
允许使用一个域,字符集,集合或事务.如果声明的对象不是表/视图, privilege 只能声明为 USAGE. 
object 
[ TABLE ] table 
SQL92 允许一个附加的非函数关键字 TABLE. 
CHARACTER SET 
允许使用声明的字符集. 
COLLATION 
允许使用声明的集合序列. 
TRANSLATION 
允许使用声明的字符集转换. 
DOMAIN 
允许使用声明的域. 
WITH GRANT OPTION 
允许向别人赋予同样权限.

posted @ 2015-04-22 11:15  Lin_xifu  阅读(762)  评论(0编辑  收藏  举报