Я хочу убедиться, что мой 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 |
+-----------+--------+--------------+---------+
Из серверной документации MariaDB о mysql .db мне неясно, должна ли запись в mysql.db
содержать пустую строку "" в столбец User
. Документы 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
или test\_%
. Могу ли я удалить эти записи?
Вопросы для db=webphp and user ="webphp"
information_schema.USER_PRIVILEGES
Насколько я понимаю, GRANTEE = 'webphp'@'%'
позволяет пользователю сети php подключаться откуда угодно. Если моя база данных работает на том же оборудовании, могу ли я удалить ее? mysql.user
Могу ли я удалить запись host=% and user=webphp
, чтобы избежать ее использования с других серверов?