mysql怎么授予创建数据库的权限

mysql怎么授予创建数据库的权限,第1张

MySQL命令行能否实现新建用户呢?答案无疑是肯定的。而且在使用使用MySQL命令行新建用户后,还可以为用户授予权限
首先要声明一下:一般情况下,修改MySQL密码,授权,是需要有mysql里的root权限的。
注:本 *** 作是在WIN命令提示符下,phpMyAdmin同样适用。
用户:phplamp
用户数据库:phplampDB
1MySQL命令行新建用户
//登录MYSQL
@>mysql -u root -p
@>密码
//创建用户
mysql> insert into mysqluser(Host,User,Password) values('localhost','phplamp',password('1234'));
//刷新系统权限表
mysql>flush privileges;
这样就创建了一个名为:phplamp 密码为:1234 的用户。
//退出后登录一下
mysql>exit;
@>mysql -u phplamp -p
@>输入密码
mysql>登录成功
2MySQL命令行为用户授权
//登录MYSQL(有ROOT权限)。我里我以ROOT身份登录
@>mysql -u root -p
@>密码
//首先为用户创建一个数据库(phplampDB)
mysql>create database phplampDB;
//授权phplamp用户拥有phplamp数据库的所有权限
@>grant all privileges on phplampDB to phplamp@localhost identified by '1234'; //这里需要注意,如果发现找不到用户,需要执行命令 flush privilieges;
//刷新系统权限表
mysql>flush privileges;
mysql>其它 *** 作
//如果想指定部分权限给一用户,可以这样来写:
mysql>grant select,update on phplampDB to phplamp@localhost identified by '1234';
//刷新系统权限表。
mysql>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 vtdcemployee to joe@1016322587 identified by ‘123′;
给来自1016322587的用户joe分配可对数据库vtdc的employee表进行select,insert,update,delete,create,drop等 *** 作的权限,并设定口令为123。
mysql>grant all privileges on vtdc to joe@1016322587 identified by ‘123′;
给来自1016322587的用户joe分配可对数据库vtdc所有表进行所有 *** 作的权限,并设定口令为123。
mysql>grant all privileges on to joe@1016322587 identified by ‘123′;
给来自1016322587的用户joe分配可对所有数据库的所有表进行所有 *** 作的权限,并设定口令为123。
mysql>grant all privileges on to joe@localhost identified by ‘123′;
给本机用户joe分配可对所有数据库的所有表进行所有 *** 作的权限,并设定口令为123。

背景

在了解动态权限之前,我们先回顾下 MySQL 的权限列表。

权限列表大体分为服务级别和表级别,列级别以及大而广的角色(也是MySQL 80 新增)存储程序等权限。我们看到有一个特殊的 SUPER 权限,可以做好多个 *** 作。比如 SET 变量,在从机重新指定相关主机信息以及清理二进制日志等。那这里可以看到,SUPER 有点太过强大,导致了仅仅想实现子权限变得十分困难,比如用户只能 SET 变量,其他的都不想要。那么 MySQL 80 之前没法实现,权限的细分不够明确,容易让非法用户钻空子。

那么 MySQL 80 把权限细分为静态权限和动态权限,下面我画了两张详细的区分图,图 1 为静态权限,图 2 为动态权限。

图 1- MySQL 静态权限的权限管理图

图 2-动态权限图

那我们看到其实动态权限就是对 SUPER 权限的细分。 SUPER 权限在未来将会被废弃掉。

我们来看个简单的例子,

比如, 用户 'ytt2@localhost', 有 SUPER 权限。

mysql> show grants for ytt2@'localhost';+---------------------------------------------------------------------------------+| Grants for ytt2@localhost                                                       |+---------------------------------------------------------------------------------+| GRANT INSERT, UPDATE, DELETE, CREATE, ALTER, SUPER ON TO ytt2@localhost |+---------------------------------------------------------------------------------+1 row in set (000 sec)

但是现在我只想这个用户有 SUPER 的子集,设置变量的权限。那么单独给这个用户赋予两个能设置系统变量的动态权限,完了把 SUPER 给拿掉。

mysql> grant session_variables_admin,system_variables_admin on to ytt2@'localhost';Query OK, 0 rows affected (003 sec)mysql> revoke super on from ytt2@'localhost';Query OK, 0 rows affected, 1 warning (002 sec)

我们看到这个 WARNINGS 提示 SUPER 已经废弃了。

mysql> show warnings;

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

| Level   | Code | Message                                      |

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

| Warning | 1287 | The SUPER privilege identifier is deprecated |

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

1 row in set (000 sec)`

mysql> show grants for ytt2@'localhost';

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

| Grants for ytt2@localhost                                                         |

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

| GRANT INSERT, UPDATE, DELETE, CREATE, ALTER ON TO ytt2@localhost          |

| GRANT SESSION_VARIABLES_ADMIN,SYSTEM_VARIABLES_ADMIN ON TO ytt2@localhost |

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

2 rows in set (000 sec)

当然图 2 上还有其它的动态权限,这里就不做特别说明了。

grant select,update,insert on database to 'user1'@'localhost' identified by '123456' with grant option;
将database库的所有权限赋予用户user1;
用户user1只能从本地登陆,密码为123456,且可以将自己有的权限赋给其他用户。

1、首先用管理员进入数据库级中的安全性,点击登录名,点击新建登录名。

2、在界面中,创建登录名,并设置默认的数据库的密码。

3、然后勾选需要设置的数据库,完成创建。

4、然后就可以对数据库中的User表进行权限的设置了,右键“属性”。

5、依次点击“添加”,浏览”,“选择对象”。

6、然后就可以下面的列表中找到对应的权限授予进行设置。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13389356.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-26
下一篇 2023-07-26

发表评论

登录后才能评论

评论列表(0条)

保存