Корневой пользователь MySQL

Я пытался создать очень простое событие MySQL и понял, что действие не выполняется. Затем я понял, что пользователь, которого я использовал, не имел супер-привилегий (или любых других привилегий, связанных с событиями). Я попытался предоставить все привилегии этому пользователю через phpMyAdmin, но это не сработало (с тех пор, как я вошел в систему как этот пользователь, а не пользователь root). На самом деле, я не уверен, есть ли у моей учетной записи root-пользователь. Как узнать, кто является пользователем root (имя пользователя и пароль)?

Я использую хостинг-провайдера, у которого есть cpanel, и когда я смотрю на список своих пользователей mysql, я вижу только тех, кого создал. Есть ли способ узнать через phpMyAdmin, если я вошел в систему как другой пользователь?

Кроме того, всякий раз, когда я создаю пользователя в cpanel, я всегда устанавливаю флажок, чтобы предоставить «все привилегии», но я только что узнал, что супер-привилегия и несколько других привилегий отсутствуют в списке. Насколько я могу судить, я не смогу создавать какие-либо события mysql, поскольку я не могу предоставить суперпривилегии ни одному из моих пользователей.

Дополнение:

При назначении пользователя базе данных единственными привилегиями, которые я могу выбрать, являются

  • ИЗМЕНИТЬ
  • ИЗМЕНИТЬ ПОДПИСКУ
  • СОЗДАЙТЕ
  • СОЗДАТЬ РЕЖИМ
  • СОЗДАТЬ ВРЕМЕННЫЕ ТАБЛИЦЫ
  • СОЗДАТЬ ВИД
  • УДАЛИТЬ
  • УРОНИТЬ
  • ВЫПОЛНЯТЬ
  • ПОКАЗАТЕЛЬ
  • ВСТАВЛЯТЬ
  • БЛОКИРОВКА СТОЛОВ
  • ИСПОЛЬЗОВАННАЯ ЛИТЕРАТУРА
  • ВЫБРАТЬ
  • ПОКАЗАТЬ ПРОСМОТР
  • КУРОК
  • ОБНОВИТЬ

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

Но пока я буду использовать задания cron.


person bowlerae    schedule 30.01.2012    source источник


Ответы (4)


Эмпирическое правило: Вашему приложению никогда не нужны привилегии суперпользователя.

Даже не использовать систему событий.

Единственное, для чего вам нужен SUPER в этом случае, это включить или отключить планировщик (который является настройкой для всего сервера). Если вы находитесь на хосте с общей базой данных, от провайдера зависит, включен планировщик или нет, и предоставлена ​​ли вам привилегия EVENT в ваших базах данных.

Если вы не используете общий хост, проверьте файл my.ini на наличие event-scheduler и убедитесь, что он включен. Затем убедитесь, что вы предоставили СОБЫТИЕ к вашему идентификатору пользователя приложения. Привилегия EVENT должна быть предоставлена, если вы использовали GRANT ALL PRIVILEGES в базе данных (а не в отдельных таблицах).

person Justin ᚅᚔᚈᚄᚒᚔ    schedule 30.01.2012
comment
Я пытался включить настройку планировщика, но не смог, возможно, потому, что я нахожусь на общем сервере БД, но я не уверен. (Довольно уверен, хотя теперь, когда вы это объяснили). Но я также проверю свой файл php.ini. - person bowlerae; 30.01.2012
comment
Но вам нужны привилегии для определения функций, поэтому они вам потребуются при разработке. - person Adam F; 24.06.2013

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

person Caleb Joseph    schedule 30.01.2012

select user() сообщит вам логин, под которым выполняется запрос.

Однако вы НЕ должны предоставлять привилегии «суперпользователя» любому коду, который обрабатывает операции БД для общедоступного кода. Для надлежащей безопасности общедоступный код БД ДОЛЖЕН иметь минимальные привилегии, необходимые для выполнения работы. Обычно это только обновление/вставка/удаление/выбор.

Предоставление таких вещей, как удаление/изменение/создание/предоставление/и т. д.... просто напрашивается на неприятности.

person Marc B    schedule 30.01.2012
comment
Я могу бросить и изменить. Я не могу предоставить. - person bowlerae; 30.01.2012

Я пытался создать очень простое событие MySQL и понял, что действие не выполняется. Затем я понял, что пользователь, которого я использовал, не имел суперпривилегий.

Читая это, вы можете сначала улучшить проверку и обработку исключений, поскольку это наверняка должно привести к возникновению некоторых ошибок в вашей системе. Это сложная задача, требующая тщательной обработки ошибок, чтобы убедиться, что все идет правильно, иначе вы, вероятно, часами будете искать ошибку в этой части.

person Luc Franken    schedule 30.01.2012