Создание пользователя на уровне MySQL Server для веб-сайта

Я разработал веб-сайт PHP на основе MySQL, используя базу данных и управляя учетной записью пользователя в users Таблица. У меня были трудности с управлением привилегиями для каждого пользователя в таблице пользователей.

Я обнаружил, что существуют привилегии рычага сервера, которые легко доступны для использования. Примерно так: -

GRANT ALL PRIVILEGES ON *.* TO 'john'@'localhost' REQUIRE NONE WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

или же

CREATE USER 'john'@'localhost' IDENTIFIED WITH mysql_native_password AS '***';GRANT SELECT, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, EVENT, TRIGGER, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EXECUTE ON *.* TO 'john'@'localhost' REQUIRE NONE WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

Первый SQL предназначен для предоставления привилегий, а второй - для создания нового пользователя и установки привилегий.

Мой вопрос: это хорошие практики программирования для создания пользователя на уровне сервера?

1 ответ

Решение

Если вы создаете веб-сайт и хотите предоставить привилегии своим пользователям, то создайте некоторую систему привилегий и предоставьте пользователю его собственный уровень привилегий. Вы можете хранить эти привилегии в отдельной таблице в базе данных. Но другое дело - предоставить привилегии вашей базе данных. С помощью запросов, о которых вы спрашиваете, вы фактически создаете пользователей базы данных и предоставляете им привилегии для управления всей вашей базой данных и всеми данными в ней. Вы определенно не должны делать это, если вы не уверены, что делаете.

Другие вопросы по тегам