本文目录一览:
- 1、mysql怎么授予创建数据库的权限
- 2、如何用phpmyadmin设置mysql数据库用户的权限
- 3、MYSQL怎么创建数据库
- 4、MySQL 8.0.23 数据库用户管理、权限分配和远程连接
- 5、MySQL 数据库,如何分角色权限建表?
mysql怎么授予创建数据库的权限
MySQL命令行能否实现新建用户呢?答案无疑是肯定的。而且在使用使用MySQL命令行新建用户后,还可以为用户授予权限。
首先要声明一下:一般情况下,修改MySQL密码,授权,是需要有mysql里的root权限的。
注:本操作是在WIN命令提示符下,phpMyAdmin同样适用。
用户:phplamp
用户数据库:phplampDB
1.MySQL命令行新建用户
//登录MYSQL
@mysql -u root -p
@密码
//创建用户
mysql insert into mysql.user(Host,User,Password) values('localhost','phplamp',password('1234'));
//刷新系统权限表
mysqlflush privileges;
这样就创建了一个名为:phplamp 密码为:1234 的用户。
//退出后登录一下
mysqlexit;
@mysql -u phplamp -p
@输入密码
mysql登录成功
2.MySQL命令行为用户授权
//登录MYSQL(有ROOT权限)。我里我以ROOT身份登录.
@mysql -u root -p
@密码
//首先为用户创建一个数据库(phplampDB)
mysqlcreate database phplampDB;
//授权phplamp用户拥有phplamp数据库的所有权限
@grant all privileges on phplampDB.* to phplamp@localhost identified by '1234'; //这里需要注意,如果发现找不到用户,需要执行命令 flush privilieges;
//刷新系统权限表
mysqlflush privileges;
mysql其它操作
//如果想指定部分权限给一用户,可以这样来写:
mysqlgrant select,update on phplampDB.* to phplamp@localhost identified by '1234';
//刷新系统权限表。
mysqlflush 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地址、机器名字、域名。也可以用’%'表示从任何地址连接。
‘连接口令’不能为空,否则创建失败。
例如:
mysqlgrant 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。
mysqlgrant all privileges on vtdc.* to joe@10.163.225.87 identified by ‘123′;
给来自10.163.225.87的用户joe分配可对数据库vtdc所有表进行所有操作的权限,并设定口令为123。
mysqlgrant all privileges on *.* to joe@10.163.225.87 identified by ‘123′;
给来自10.163.225.87的用户joe分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。
mysqlgrant all privileges on *.* to joe@localhost identified by ‘123′;
给本机用户joe分配可对所有数据库的所有表进行所有操作的权限,并设定口令为123。
如何用phpmyadmin设置mysql数据库用户的权限
第1步:打开phpMyAdmin,点击菜单栏的【用户】按钮,进入用户管理页面。
第2步:用户管理页面列出了现有用户信息,点击【添加用户】创建新用户。
第3步:输入用户名【User name】。有两个选项:任意用户、使用文本域,它们之间没有明显区别,推荐选择“使用文本域”,然后在文本框中输入用户名,如sky。
第4步:输入主机【Host】信息。这里有四个选项:任意主机(%)、本地( localhost)、使用主机表(host)、Use text field(即使用文本域)。
任意主机表示匹配所有主机;本地表示仅限本地主机(默认填写localhost);使用主机指以MySQL数据库中的host表中的数据为准,不需填写任何信息(如果填写则此选项无效);使用文本域表示自行填写主机地址信息。此处选择“本地”选项。
第5步:输入密码和Re-type(确认密码)。有两个选项:无密码、使用文本域。此处选择“使用文本域”,可以手动输入密码,也可以点击【生成】按钮,自动生成密码并在最下方文本框中显示。
第6步:为用户分配权限。权限管理分为两大块:用户数据库和全局权限。
用户数据库包括两个选项:创建与用户同名的数据库并授予所有权限;给以用户名_开通的数据库授予所有权限。可根据需要自行选择。此处两个都未选,仅创建新用户。
全局权限包括四部分:数据、结构、管理和资源限制。可根据需要自行选择。这里我选择了“全选”。
第7步:权限分配好后,点击右下角的【执行】按钮,执行创建新用户操作。
2. 编辑用户权限
第1步:进入phpMyAdmin用户管理页面,我们可以看到刚才创建的用户sky,如图所示。
第2步:点击用户sky对应的【编辑权限】按钮,进入编辑页面。
第3步:根据需要修改勾选权限选项后,点击【执行】按钮保存修改。
3. 修改用户信息
第1步:用户的用户名、主机、密码等信息的修改也在“编辑权限”页面。所以首先也要点击用户sky对应的【编辑权限】按钮,进入编辑页面。
第2步:修改用户信息主要涉及“修改密码”和“修改登录信息/复制用户”两块,分别填写相应内容,并点击对应的【执行】按钮完成操作即可。
4. 删除用户
第1步:进入phpMyAdmin用户管理页面,选中需要删除的用户,以sky为例。
第2步:点击右下角的【执行】按钮,删除用户sky。如果创建用户时选择了“创建与用户同名的数据库并授予所有权限”选项,则可以勾选【删除选中的用户】模块中的“删除与用户同名的数据库”,将数据库和用户一起删除。
MYSQL怎么创建数据库
MySQL 创建数据库
创建数据库就是在系统磁盘上划分一块区域用于存储和管理数据,管理员可以为用户创建数据库,被分配了权限的用户可以自己创建数据库。
需要更多主流数据库创建方法的知友可以看看下面这篇文章:
数据库怎么创建?4种流行数据库的创建方法介绍_树懒学堂
MySQL中创建数据库的基本语法格式如下:
其中“db_name”是将要创建的数据库名称,该名称不能与已经存在的数据库重名。
例子:创建数据库
创建数据库 shulanxt,输入语句如下:
按回车键执行语句,创建名为shulanxt的数据库。
MySQL 8.0.23 数据库用户管理、权限分配和远程连接
这个目前应该是MySQL比较新的版本了,教程仅在Linux平台上验证通过,其他平台请自证。提供步骤和思路方便快速分析和定位问题。
根据需求在完成理解前面步骤后,接下来需要配置允许远程连接(生产环境请通过ssh隧道方式,且mysql配置文件bind-address为特定ip或本机)
最后,感谢您的阅读,由于时间仓促,文章内容难免有不妥之处,欢迎交流和指正~~
Mark一下 惟月慎行 再也不会迷路了^_^!
MySQL 数据库,如何分角色权限建表?
角色一直存在各个数据库中,比如 SQL Server、Oracle 等,MySQL 自从版本 8.0 release,引入了角色这个概念。
角色的概念
角色就是一组针对各种数据库权限的集合。比如,把一个角色分配给一个用户,那这个用户就拥有了这个角色包含的所有权限。一个角色可以分配给多个用户,另外一个用户也可以拥有多个角色,两者是多对多的关系。不过 MySQL 角色目前还没有提供类似于其他数据库的系统预分配的角色。比如某些数据库的 db_owner、 db_datareader 、 db_datawriter 等等。那接下来我分几个方面,来示例说明角色的使用以及相关注意事项。
示例 1:一个完整角色的授予步骤
用管理员创建三个角色:db_owner, db_datareader, db_datawriter
mysql create role db_owner,db_datareader,db_datawriter;
Query OK, 0 rows affected (0.02 sec)
mysql grant all on ytt_new.* to db_owner;
Query OK, 0 rows affected (0.01 sec)
mysql grant select on ytt_new.* to db_datareader;
Query OK, 0 rows affected (0.01 sec)
mysql grant insert,delete,update on ytt_new.* to db_datawriter;
Query OK, 0 rows affected (0.01 sec)
创建三个普通用户,分别为 ytt1、ytt2、ytt3。mysql create user ytt1 identified by 'ytt',ytt2 identified by 'ytt',ytt3 identified by 'ytt';Query OK, 0 rows affected (0.01 sec)
分别授予这三个用户对应的角色。
-- 授权角色
mysql grant db_owner to ytt1;
Query OK, 0 rows affected (0.02 sec)
-- 激活角色
mysql set default role db_owner to ytt1;
Query OK, 0 rows affected (0.00 sec)
mysql grant db_datareader to ytt2;
Query OK, 0 rows affected (0.01 sec)
mysql set default role db_datareader to ytt2;
Query OK, 0 rows affected (0.01 sec)
mysql grant db_datawriter to ytt3;
Query OK, 0 rows affected (0.01 sec)
mysql set default role db_datawriter to ytt3;
Query OK, 0 rows affected (0.01 sec)
以上是角色授予的一套完整步骤。那上面有点非常规的地方是激活角色这个步骤。MySQL 角色在创建之初默认是没有激活的,也就是说创建角色,并且给一个用户特定的角色,这个用户其实并不能直接使用这个角色,除非激活了才可以。
示例 2:一个用户可以拥有多个角色
-- 用管理员登录并且创建用户
mysql create user ytt4 identified by 'ytt';
Query OK, 0 rows affected (0.00 sec)
-- 把之前的三个角色都分配给用户ytt4.
mysql grant db_owner,db_datareader,db_datawriter to ytt4;
Query OK, 0 rows affected (0.01 sec)
-- 激活用户ytt4的所有角色.
mysql set default role all to ytt4;
Query OK, 0 rows affected (0.02 sec)
-- ytt4 用户登录
root@ytt-pc:/var/lib/mysql# mysql -uytt4 -pytt -P3304 -hytt-pc
...
-- 查看当前角色列表
mysql select current_role();
+--------------------------------------------------------+
| current_role() |
+--------------------------------------------------------+
| `db_datareader`@`%`,`db_datawriter`@`%`,`db_owner`@`%` |
+--------------------------------------------------------+
1 row in set (0.00 sec)
-- 简单创建一张表并且插入记录, 检索记录,完了删掉这张表
mysql use ytt_new
Database changed
mysql create table t11(id int);
Query OK, 0 rows affected (0.05 sec)
mysql insert into t11 values (1);
Query OK, 1 row affected (0.02 sec)
mysql select * from t11;
+------+
| id |
+------+
| 1 |
+------+
1 row in set (0.00 sec)
mysql drop table t11;
Query OK, 0 rows affected (0.04 sec)
示例 3:用户在当前 session 里角色互换
其实意思是说,用户连接到 MySQL 服务器后,可以切换当前的角色列表,比如由 db_owner 切换到 db_datareader。
-- 还是之前的用户ytt4, 切换到db_datareader
mysql set role db_datareader;
Query OK, 0 rows affected (0.00 sec)
mysql select current_role();
+---------------------+
| current_role() |
+---------------------+
| `db_datareader`@`%` |
+---------------------+
1 row in set (0.00 sec)
-- 切换后,没有权限创建表
mysql create table t11(id int);
ERROR 1142 (42000): CREATE command denied to user 'ytt4'@'ytt-pc' for table 't11'
-- 切换到 db_owner,恢复所有权限。
mysql set role db_owner;
Query OK, 0 rows affected (0.00 sec)
mysql create table t11(id int);
Query OK, 0 rows affected (0.04 sec)
示例 4:关于角色的两个参数
activate_all_roles_on_login:是否在连接 MySQL 服务时自动激活角色mandatory_roles:强制所有用户默认角色
-- 用管理员连接MySQL,
-- 设置默认激活角色
mysql set global activate_all_roles_on_login=on;
Query OK, 0 rows affected (0.00 sec)
-- 设置强制给所有用户赋予角色db_datareader
mysql set global mandatory_roles='db_datareader';
Query OK, 0 rows affected (0.00 sec)
-- 创建用户ytt7.
mysql create user ytt7;
Query OK, 0 rows affected (0.01 sec)
-- 用 ytt7登录数据库
root@ytt-pc:/var/lib/mysql# mysql -uytt7 -P3304 -hytt-pc
...
mysql show grants;
+-------------------------------------------+
| Grants for ytt7@% |
+-------------------------------------------+
| GRANT USAGE ON *.* TO `ytt7`@`%` |
| GRANT SELECT ON `ytt_new`.* TO `ytt7`@`%` |
| GRANT `db_datareader`@`%` TO `ytt7`@`%` |
+-------------------------------------------+
3 rows in set (0.00 sec)
示例 5 :create role 和 create user 都有创建角色权限,两者有啥区别?
以下分别创建两个用户 ytt8、ytt9,一个给 create role,一个给 create user 权限。
-- 管理员登录,创建用户ytt8,ytt9.
mysql create user ytt8,ytt9;
Query OK, 0 rows affected (0.01 sec)
mysql grant create role on *.* to ytt8;
Query OK, 0 rows affected (0.02 sec)
mysql grant create user on *.* to ytt9;
Query OK, 0 rows affected (0.01 sec)
-- 用ytt8 登录,
root@ytt-pc:/var/lib/mysql# mysql -uytt8 -P3304 -hytt-pc
...
mysql create role db_test;
Query OK, 0 rows affected (0.02 sec)
-- 可以创建角色,但是不能创建用户
mysql create user ytt10;
ERROR 1227 (42000): Access denied; you need (at least one of) the CREATE USER privilege(s) for this operation
mysql \q
Bye
-- 用ytt9 登录
root@ytt-pc:/var/lib/mysql# mysql -uytt9 -P3304 -hytt-pc
...
-- 角色和用户都能创建
mysql create role db_test2;
Query OK, 0 rows affected (0.02 sec)
mysql create user ytt10;
Query OK, 0 rows affected (0.01 sec)
mysql \q
Bye
那这里其实看到 create user 包含了 create role,create user 即可以创建用户,也可以创建角色。
示例 6:MySQL 用户也可以当角色来用
-- 用管理员登录,创建用户ytt11,ytt12.
mysql create user ytt11,ytt12;
Query OK, 0 rows affected (0.01 sec)
mysql grant select on ytt_new.* to ytt11;
Query OK, 0 rows affected (0.01 sec)
-- 把ytt11普通用户的权限授予给ytt12
mysql grant ytt11 to ytt12;
Query OK, 0 rows affected (0.01 sec)
-- 来查看 ytt12的权限,可以看到拥有了ytt11的权限
mysql show grants for ytt12;
+-----------------------------------+
| Grants for ytt12@% |
+-----------------------------------+
| GRANT USAGE ON *.* TO `ytt12`@`%` |
| GRANT `ytt11`@`%` TO `ytt12`@`%` |
+-----------------------------------+
2 rows in set (0.00 sec)
-- 在细化点,看看ytt12拥有哪些具体的权限
mysql show grants for ytt12 using ytt11;
+--------------------------------------------+
| Grants for ytt12@% |
+--------------------------------------------+
| GRANT USAGE ON *.* TO `ytt12`@`%` |
| GRANT SELECT ON `ytt_new`.* TO `ytt12`@`%` |
| GRANT `ytt11`@`%` TO `ytt12`@`%` |
+--------------------------------------------+
3 rows in set (0.00 sec)
示例 7:角色的撤销
角色撤销和之前权限撤销类似。要么 revoke,要么删除角色,那这个角色会从所有拥有它的用户上移除。
-- 用管理员登录,移除ytt2的角色
mysql revoke db_datareader from ytt2;
Query OK, 0 rows affected (0.01 sec)
-- 删除所有角色
mysql drop role db_owner,db_datareader,db_datawriter;
Query OK, 0 rows affected (0.01 sec)
-- 对应的角色也从ytt1上移除掉了
mysql show grants for ytt1;
+----------------------------------+
| Grants for ytt1@% |
+----------------------------------+
| GRANT USAGE ON *.* TO `ytt1`@`%` |
+----------------------------------+
1 row in set (0.00 sec)
至此,我分了 7 个目录说明了角色在各个方面的使用以及注意事项,希望对大家有帮助。