我写了一个批量修改用户权限的存储过程(因为mysql没有自定义用户组或者角色的机制),核心是这样的
declare username char(16); //user表里的user就是char(16)类型的
begin
...
set username = '用户名';
grant insert on db.* to username@'localhost';
...
end
但总是提示ERROR 1133 (42000): Can't find any matching row in the user table
username = '用户名' 绝对是正确的,因为在存储过程里用 select user from mysql.user where user = username 是有结果的,但是用grant就不行,难道grant命令不支持变量吗
declare username char(16); //user表里的user就是char(16)类型的
begin
...
set username = '用户名';
grant insert on db.* to username@'localhost';
...
end
但总是提示ERROR 1133 (42000): Can't find any matching row in the user table
username = '用户名' 绝对是正确的,因为在存储过程里用 select user from mysql.user where user = username 是有结果的,但是用grant就不行,难道grant命令不支持变量吗
解决方案 »
- 用一条SQL语句 查询出每门课都大于80分的学生姓名
- mysql 更新一条记录不是立刻存进去吗?
- mysql中怎么做能每个表建一个数据文件,然后索引和数据文件分开?
- 我有个字段是timestamp类型,默认为CURRENT_TIMESTAMP
- 表访问频率
- 如何取得当前用户下的表名列表?
- 如何提高mysql查询中使用not in时的查询速度?
- 在Mysql中建立了数据库后,每次向表中插入数据时,都会提示没有表“1”,可是该数据库下就没有建立表“1”呀
- 为什么mysql的longblob类型数据上传超过1M就不行了?
- 求下列数据库的ODBC驱动程序
- 导入表出错,请问如何改啊
- 如何统计某个字段的值在各个值域内的记录的条数?
mysql> PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
mysql> SET @a = 3;
mysql> SET @b = 4;
mysql> EXECUTE stmt1 USING @a, @b;
+------------+
| hypotenuse |
+------------+
| 5 |
+------------+
mysql> DEALLOCATE PREPARE stmt1;