MYSQL授权先后顺序的测试

最近实际工作中遇到一个小问题,查看授权,明明已经给一个表授权了create,但是还是报错无create权限。

下面是详细的步骤以及最终的解决方案。

可以看出mysql授权上,有一定的匹配规则。

1、root用户,创建数据库

mysql> create database gw_cgm        ;

Query OK, 1 row affected (0.01 sec)

mysql>  create database gw_ga     ;

Query OK, 1 row affected (0.00 sec)

mysql>  create database gw_log01    ;

Query OK, 1 row affected (0.00 sec)

mysql>  create database gw_log02    ;

Query OK, 1 row affected (0.00 sec)

2、创建app_ddd用户并授权

先给gw_%的所有表授权

再给gw_cgm设置create、drop的权限

mysql> show grants for [email protected]‘10.%‘;

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

| Grants for [email protected]%                                                                                   |

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

| GRANT USAGE ON *.* TO ‘app_ddd‘@‘10.%‘                                                                    |

| GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON `gw_%`.* TO ‘app_ddd‘@‘10.%‘                             |

| GRANT CREATE, DROP ON `gw_cgm`.* TO ‘app_ddd‘@‘10.%‘                                                      |

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

3 rows in set (0.00 sec)

3、使用app_ddd用户登录mysql

mysql -uapp_ddd

mysql> show databases;

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

| Database           |

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

| information_schema |

| gw_cgm             |

| gw_log01           |

| gw_log02           |

| gw_ga              |

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

4、创建一个表,报错,无权限

mysql> use gw_cgm

Database changed

mysql> CREATE TABLE `t5` (`id` int(1) NOT NULL DEFAULT ‘1‘,`name` varchar(5) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1;

ERROR 1142 (42000): CREATE command denied to user ‘app_ddd‘@‘10.12.200.102‘ for table ‘t5‘

5、切换root用户下

(1)回收app_ddd用户

mysql> REVOKE SELECT, INSERT, UPDATE, DELETE, EXECUTE ON `gw_%`.* FROM ‘app_ddd‘@‘10.%‘;

Query OK, 0 rows affected (0.00 sec)

mysql> REVOKE CREATE, DROP ON `gw_cgm`.* FROM ‘app_ddd‘@‘10.%‘;

Query OK, 0 rows affected (0.00 sec)

(2)重新给app_ddd用户授权,注意这里的授权顺序。

先给gw_cgm授create、drop权限

再给gw_%授权

mysql> GRANT CREATE, DROP ON `gw_cgm`.* TO ‘app_ddd‘@‘10.%‘ ;

Query OK, 0 rows affected (0.00 sec)

mysql> GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON `gw_%`.* TO ‘app_ddd‘@‘10.%‘;

Query OK, 0 rows affected (0.00 sec)

mysql> show grants for [email protected]‘10.%‘;

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

| Grants for [email protected]%                                                                                   |

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

| GRANT USAGE ON *.* TO ‘app_ddd‘@‘10.%‘                                                                    |

| GRANT CREATE, DROP ON `gw_cgm`.* TO ‘app_ddd‘@‘10.%‘                                                      |

| GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON `gw_%`.* TO ‘app_ddd‘@‘10.%‘                             |

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

3 rows in set (0.00 sec)

6、使用app_ddd 重新登录

mysql> use gw_cgm

Database changed

mysql> CREATE TABLE `t5` (`id` int(1) NOT NULL DEFAULT ‘1‘,`name` varchar(5) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Query OK, 0 rows affected (0.13 sec)

通过测试可以看出:先给gw_%授基本权限,后面新增的create权限,mysql并为授权create。

时间: 2024-12-28 08:48:39

MYSQL授权先后顺序的测试的相关文章

MySQL多线程同步-Transfer使用测试

由淘宝核心系统研发-数据库组开发的MySQL-Transfer,用于解决MySQL主从同步延迟的问题,从MySQL单线程到多线程的工作模式.可以观看@丁奇的相关资料: MySQL多线程同步-Transfer使用说明MySQL异步复制延迟解决的架构设计与运维架构-在线播放-优酷网 系统结构 : 传统的主从结构是 [Master] à [Slave], Master和slave主从关系: 使用transfer以后,[Master] à [Transfer] .--> [Slave], Master和

Mysql 语句执行顺序

转载自:http://blog.csdn.net/jintao_ma/article/details/51253356 1.这样一个问题,作为一个开发人员需要掌握数据库的哪些东西?  在开发中涉及到数据库,基本上只用到了sql语句,如何写sql以及对其进行优化就比较重要,那些mysql的厚本书籍针对的是DBA,我们只需要学习其中的sql就可以了. 2.既然会写sql是目标,那么怎么才能写好sql.学习下面几点: 1)Mysql的执行顺序,这个是写sql的核心,之前遇到的一些错误就是因为对其不了解

mysql支持的数据类型及其测试

原文:mysql支持的数据类型及其测试 1.基础知识 1.1如何来查看mysql的帮助手册 ?int Help float; 1.2创建表的规则 CREATE TABLE [IF NOT EXISTS] tbl_name( 字段名 字段类型 [完整性的约束条件]); 1.3如何向表中插入数据 INSERT [INTO] tab_name [(字段名称--)] VALUES (值--) 1.4Mysql数据类型 1.数值型 整数类型 TINYINT:范围0~255;-128~127占用1字节 SM

linux mysql 卸载,安装,测试全过程

Mysql卸载 yum remove mysql mysql-server mysql-libs compat-mysql51 rm -rf /var/lib/mysql rm /etc/my.cnf 查看是否还有mysql软件: rpm -qa|grep mysql 有的话继续删除 Mysql安装 1>若本地没有安装包 可以考虑使用yum命令进行下载 # yum -y install mysql-server # yum -y install php-mysql 2>安装后,MySQL自动启

1、MySql的安装和连接测试

一.mysql数据库的安装 1.打开mysql-5.0.18-win32文件夹,然后点击setup.exe 2.点击next 3.选取“custom”,点击next 4.点击“change”,改变安装路径,然后点击next 5.点击“install”后,等待几秒钟,出现图 6.点next 7.点next 8.点“finish”,进入数据库配置 9.点next 10.点next 11.选取“Server Machine”,点“next” 12.点“next” 13.点“next” 14.点“nex

mysql 授权

cd /usr/local/mysql/bin/grant all privileges on *.* to 'root'@'%' identified by '12345678';flush privileges; grant select on weixin.wx_tuijian to 'bbc_select'@'%' identified by 'bbc_select'; mysql 授权,布布扣,bubuko.com

Mysql中Event的一些测试

Mysql的event schedule可以让你设置你的mysql数据库在某个时间段执行你想要的动作create event test1on schedule every 1 daystarts '2007-09-01 12:00:00'on completion not preservedo insert into yyy values('hhh','uuu');或create event teston schedule at '2007-09-01 12:00:00' + interval

mysql 自带的压力测试

注意mysqlslap 是mysql5.1之后新添加的功能,之前的版本是没有此功能的 mysql 自带的压力测试

Mysql授权root用户使用远程客户端连接

Mysql授权root用户使用远程客户端连接: 进入mysql控制台: shell>mysql -u root -p 在控制台授权: mysql>GRANT ALL PRIVILEGES ON  *.*  TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; mysql>FLUSH PRIVILEGES; root可以替换成其他的mysql用户 %可以替换成你允许远程登陆的IP地址