Пользователь базы данных MySQL: Какие привилегии необходимы?


В краткой инструкции по установке WordPress ( "5 минут" ) говорится, что:

Создайте базу данных для WordPress на своем веб-сервере, а также пользователя MySQL, у которого есть все права для доступа к ней и ее изменения.

При профессиональной настройке нового блога мне было интересно, как это соотносится с тем, что предлагает мне конфигурация привилегий/разрешений пользователей базы данных MySQL:

  • Данные: SELECT, INSERT, UPDATE, DELETE
  • Определение: CREATE, ALTER, DROP
  • Дополнительно: INDEX
  • Подробнее:
    1. LOCK TABLES
    2. REFERENCES
    3. CREATE TEMPORARY TABLES
    4. CREATE VIEW
    5. SHOW VIEW
    6. CREATE ROUTINE
    7. EXECUTE
    8. ALTER ROUTINE

Я почти уверен, что для первых трех групп я назвал их Данные, Определение и Дополнительные здесь. Но как насчет остальных под записью Больше? Обычно я бы сказал, в этом нет необходимости, но я хотел бы получить второе мнение.

Author: hakre, 2011-01-06

5 answers

Остальные, как вы указываете, не нужны.

Кстати, что вы могли бы сделать, так это условно установить пользователя/пропуск на основе запрошенной страницы. Как и в случае с непривилегированным выбором/вставкой/обновлением/удалением для обычного использования, а также с привилегиями, связанными с определением/индексом, дополнительно при посещении страницы обновления.

 15
Author: Denis de Bernardy, 2011-01-06 16:09:44

"Все привилегии" обычно означает, что вы должны предоставить все пользователю. Однако...

Я нашел по крайней мере одну статью , в которой утверждается, что пользователю MySQL нужно только:

  • ВЫБЕРИТЕ
  • ВСТАВИТЬ
  • ОБНОВЛЕНИЕ

Копая глубже, я обнаружил, что для полноценной работы (автоматические обновления, установка/удаление плагинов и т.д.) WordPress требуются некоторые дополнительные разрешения:

  • УДАЛИТЬ
  • ИЗМЕНИТЬ (для обновления)
  • СОЗДАТЬ ТАБЛИЦУ
  • ТАБЛИЦА УДАЛЕНИЯ

Также, не упоминается, но это имеет смысл:

  • ИНДЕКС

Но это единственные две надежные ссылки, которые я могу найти, которые подкреплены мнениями, опубликованными в других местах. Я бы все равно рекомендовал вам придерживаться ПРЕДОСТАВЛЕНИЯ ВСЕХ, но если вы абсолютно должны ограничить использование БД, начните с этих 7 привилегий и полностью протестируйте, чтобы убедиться, что все работает так, как ожидалось.

 38
Author: EAMann, 2011-01-06 15:17:25

Вот что говорит Кодекс об ограничении прав пользователей базы данных:

Для обычных операций WordPress, таких как публикация сообщений в блоге, загрузка медиафайлов, публикация комментариев, создание новых пользователей WordPress и установка плагинов WordPress, пользователю базы данных MySQL нужны только права на чтение и запись данных в базу данных MySQL; ВЫБОР, ВСТАВКА, ОБНОВЛЕНИЕ и УДАЛЕНИЕ.

Поэтому любые другие привилегии структуры базы данных и администрирования, такие как УДАЛЕНИЕ, ИЗМЕНЕНИЕ и ГРАНТ может быть отозван. Отменяя такие привилегии, вы также улучшаете политику сдерживания.

Примечание: Некоторые плагины, темы и основные обновления WordPress могут потребовать внесения структурных изменений в базу данных, таких как добавление новых таблиц или изменение схемы. В таком случае перед установкой плагина или обновлением программного обеспечения временно предоставьте пользователю базы данных необходимые привилегии.

Http://codex.wordpress.org/Hardening_WordPress

 12
Author: redburn, 2020-06-15 08:21:38

Что касается "Примечания" в сообщении Редберна, в Кодексе Wordpress также есть предупреждение, которое вы также должны прочитать об обновлениях и изменениях схемы базы данных...

(Редактировать: Я замечаю, однако, что Я НЕ ВИЖУ " ГРАНТ" в списке привилегий больше нет при создании или обновлении пользователя. Возможно " СОЗДАТЬ" следует ли добавлять в список? У кого-нибудь есть информация по этому поводу? -- использование cPanel Hostgator, март 2016 г. --)

ПРЕДУПРЕЖДЕНИЕ:
Попытка обновления без этих привилегий [ВЫБИРАТЬ, ВСТАВЛЯТЬ, ОБНОВЛЯТЬ, УДАЛЯТЬ, УДАЛЯТЬ, ИЗМЕНЯТЬ и ПРЕДОСТАВЛЯТЬ ] может вызвать проблемы при изменении схемы базы данных. Таким образом, не рекомендуется отменять эти привилегии. Если вы чувствуете необходимость сделать это по соображениям безопасности, пожалуйста, сначала убедитесь, что у вас есть надежный план резервного копирования, с регулярными резервными копиями всей базы данных, которые вы проверили, являются действительными, и это может быть легко восстановленный. Неудачный обновление базы данных обычно можно решить, восстановив базу данных до старой версии, предоставив соответствующие разрешения, а затем разрешив WordPress повторите попытку обновления базы данных. Восстановление базы данных вернет ее к этой старой версии, а затем экраны администрирования WordPress обнаружат старую версию и позволят вам выполнить на ней необходимые команды SQL. Большинство обновлений WordPress не меняются схема, но некоторые делают. Только основные точечные обновления (3.7 до 3.8, например) изменит схему. Незначительные обновления (с 3.8 по 3.8.1) , как правило, не будут. Тем не менее, сохраняйте регулярную резервную копию.

Кодекс: http://codex.wordpress.org/Hardening_WordPress

 2
Author: Jerry9, 2016-03-30 07:10:17

Мое мнение совпадает с мнением @EAMann выше, а также с источниками, на которые он ссылался: ПРЕДОСТАВЬТЕ ВСЕ необходимое для обеспечения работоспособности вашего сайта и его будущего подтверждения. Даже на производственной площадке вы должны стараться придерживаться руководства пользователя.

Как человек, который вносит код в ядро WordPress и несколько подключаемых модулей, я рекомендую вам сохранить права доступа к БД по умолчанию, как указано в руководстве пользователя (ПРЕДОСТАВЬТЕ ВСЕ ПРАВА НА wpdatabasename.* ДЛЯ "wordpressusername"@"имя хоста").

В Исходный код WordPress (как настоящий, так и будущий) предполагает, что пользователь базы данных WordPress обладает всеми правами базы данных для данной базы данных WordPress. Если в вашей установке отсутствуют какие-либо привилегии БД, вы можете столкнуться с проблемами при обновлении WordPress и добавлении дополнительных плагинов.

Таким образом, вам действительно не следует использовать привилегии БД, отличные от привилегий БД по умолчанию, рекомендованных руководством, если вы не знаете, что делаете, не имеете особых потребностей и не забудете, что у вас есть пользовательские привилегии БД.

В С тех пор страница Кодекса была обновлена о том, как это сделать, с примерами в различных системах и скриншотами. https://codex.wordpress.org/Installing_WordPress#Step_2:_Create_the_Database_and_a_User

Создание имени базы данных и пользователя (через phpMyAdmin): https://codex.wordpress.org/Installing_WordPress#Using_phpMyAdmin

Создание имени базы данных и пользователя (с помощью командной строки MySQL клиент): https://codex.wordpress.org/Installing_WordPress#Using_the_MySQL_Client

mysql> CREATE DATABASE wpdatabasename;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON wpdatabasename.* TO "wordpressusername"@"hostname"
    -> IDENTIFIED BY "password";
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql> EXIT
 0
Author: Steven Lin, 2018-10-08 15:51:13