【发布时间】:2014-06-03 21:48:36
【问题描述】:
Why not use the built-in MySQL users and permissions for a website?
上面的链接很好地解释了我所处的困境。
我有一个应用程序,用户通过提供用户名和密码来注册它。还有一些附加信息可以存储在与用户名相关的单独表(所有用户一个)中。此外,我想将用户限制为仅使用 GRANT 存储特定于该用户的事件的一个表。要使用授权,需要 MySQL 用户帐户。那么问题就变成了,MySQL 用户同时也是应用程序用户有什么问题吗?
我已经阅读了一些帖子,这些帖子一直建议实施我自己的身份验证和访问系统,为什么要重新发明轮子?我在 MySQL 页面上没有遇到任何反对上述链接的建议。
编辑
我用以下语句创建了一个用户
CREATE USER 'test'@'localhost' IDENTIFIED BY 'testing';
其次是授予权限
GRANT CREATE USER ON *.* to 'test'@'localhost';
然后我以该用户身份登录并执行以下命令:
mysql> show grants;
+-----------------------------------------------------------------------------------------+
| Grants for tester@localhost |
+-----------------------------------------------------------------------------------------+
| GRANT CREATE USER ON *.* TO 'tester'@'localhost' IDENTIFIED BY PASSWORD '*AC57754462B6D4C373263062D60EDC6E452E574D' |
+-----------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| test |
+--------------------+
2 rows in set (0.00 sec)
mysql> use mysql
ERROR 1044 (42000): Access denied for user 'tester'@'localhost' to database 'mysql'
我相信这里唯一的问题是 DROP USER 命令。有什么办法可以防止吗?
mysql> DROP USER 'root'@'localhost'; ERROR 1396 (HY000): 'root'@'localhost' 的操作 DROP USER 失败
【问题讨论】:
-
我觉得不方便,因为mysql.users是MySAM,所以不支持事务
标签: java mysql security authentication