mysql - db 包含具有空用户名和可疑 db 条目的记录
问题描述
我想确保我的 php 网站和登录数据库的用户在 maria db 上只有强制权限/特权。我也想知道
- 如果某些记录可疑或至少是不安全的配置
- 如果建议这样做,如何安全地删除某些记录
记录是
- 从
mysql.user
记录User=webphp AND Host=%
- 从
information_schema.USER_PRIVILEGES
记录GRANTEE='webphp'@'%'
- 从
mysql.db
记录User="" and host='%'
我的数据库中的记录
mysql.user
SELECT Host, User FROM mysql.user where Host in ('%', '127.0.0.1', '::1', 'localhost');
+-----------+--------+
| Host | User |
+-----------+--------+
| 127.0.0.1 | root |
| ::1 | root |
| localhost | root |
| % | webphp | <-- Can i delete this to avoid connections from outside?
| localhost | webphp |
+-----------+--------+
information_schema.USER_PRIVILEGES
SELECT * FROM information_schema.USER_PRIVILEGES where PRIVILEGE_TYPE = 'USAGE';
+----------------------+---------------+----------------+
| GRANTEE | TABLE_CATALOG | PRIVILEGE_TYPE |
+----------------------+---------------+----------------+
| 'webphp'@'localhost' | def | USAGE |
| 'webphp'@'%' | def | USAGE | <-- Can i delete this?
+----------------------+---------------+----------------+
mysql.db
SELECT Host, User, Length(User), Db FROM mysql.db;
+-----------+--------+--------------+---------+
| Host | User | Length(User) | Db |
+-----------+--------+--------------+---------+
| % | | 0 | test | <-- AFAIK i have no Db named test
| % | | 0 | test\_% | <-- same here - Delete?
| localhost | webphp | 6 | webphp |
+-----------+--------+--------------+---------+
从关于 mysql.db 的 MariaDB 服务器文档中,我不清楚mysql.db
列中的记录是否应该有一个空字符串“” User
。docs information-schema-innodb_sys_datafiles-table没有说明我是否可以在此处删除记录。
关于仅授予强制性权利/特权的问题
我计划授予这些权利
GRANT USAGE, SELECT, INSERT, UPDATE, DELETE, EXECUTE, ALTER, CREATE TEMPORARY TABLES
ON *webphp.* TO 'webphp'@localhost IDENTIFIED BY 'mySuperSecretPW';
以上应确保user webphp
只能连接到db webphp
如果他从同一硬件连接
- 这些权利是否足够?我错过了吗?
- 这是个好主意吗?
问题db=test and user =""
- 我应该删除
mysql.db
字段/列为User
空的记录吗? - 据我所知,我没有名为
test
or的 Dbtest\_%
。我可以删除这些记录吗?
问题db=webphp and user ="webphp"
information_schema.USER_PRIVILEGES
据我了解GRANTEE = 'webphp'@'%'
,允许用户 webphp 从任何地方连接。如果我的数据库在相同的硬件上运行,我应该删除它吗?mysql.user
我可以删除记录host=% and user=webphp
以避免被其他服务器使用吗?
解决方案
GRANT USAGE, SELECT, INSERT, UPDATE, DELETE, EXECUTE, ALTER, CREATE TEMPORARY TABLES
ON *webphp.* TO 'webphp'@localhost IDENTIFIED BY 'mySuperSecretPW';
这些权利是否足够?我错过了吗?
更具体的数据库名称和使用webphp.*
。如果确实不需要,不要给用户delete
或权限。alter
如果您的应用程序需要删除内容,则在表中有一列标记要删除的内容。
这是个好主意吗?
是的。
db=test 和 user="" 的问题
删除不需要的用户和数据库。
information_schema.USER_PRIVILEGES 据我了解 GRANTEE = 'webphp'@'%' 允许用户 webphp 从任何地方连接。如果我的数据库在相同的硬件上运行,我应该删除它吗?
是的
mysql.user 我可以删除记录 host=% 和 user=webphp 以避免从其他服务器使用吗?
是的
推荐阅读
- java - Tomcat部署到服务器,时间一长导致内存溢出
- python - 如何在快速排序算法中对负数进行排序?
- javascript - 访问 Mongo 嵌套十进制对象
- python - 当 QListWidget 添加或删除内容时如何触发事件
- python - Python:广义输入转换装饰器
- python-3.x - 为什么 .replace 方法对我不起作用?
- python - python 中如何表示红外图像?
- r - 使用 options() 保存密码不保存到全局选项以供将来使用
- javascript - 使用 npm 将分叉存储库安装为依赖项时出错
- javascript - 在javascript中显示选定的值单选按钮组