首页 > 解决方案 > db 包含具有空用户名和可疑 db 条目的记录

问题描述

我想确保我的 php 网站和登录数据库的用户在 maria db 上只有强制权限/特权。我也想知道

记录是

  1. mysql.user记录User=webphp AND Host=%
  2. information_schema.USER_PRIVILEGES记录GRANTEE='webphp'@'%'
  3. 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如果他从同一硬件连接

  1. 这些权利是否足够?我错过了吗?
  2. 这是个好主意吗?

问题db=test and user =""

  1. 我应该删除mysql.db字段/列为User空的记录吗?
  2. 据我所知,我没有名为testor的 Db test\_%。我可以删除这些记录吗?

问题db=webphp and user ="webphp"

  1. information_schema.USER_PRIVILEGES据我了解GRANTEE = 'webphp'@'%' ,允许用户 webphp 从任何地方连接。如果我的数据库在相同的硬件上运行,我应该删除它吗?
  2. mysql.user我可以删除记录host=% and user=webphp以避免被其他服务器使用吗?

标签: mysqlsecuritypermissionsmariadbgrant

解决方案


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 以避免从其他服务器使用吗?

是的


推荐阅读