Запрос SQL на создание (изменение) пользователя
В этой небольшой статье мы разберём SQL-запрос, который позволяет добавлять новых пользователей к базе данных, а также изменять параметры уже существующих.
Давайте приведу сразу пример SQL-запроса на создание нового пользователя базы данных:
GRANT SELECT , INSERT , UPDATE , CREATE , PROCESS ON * . * TO 'MyUser'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 10 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 10
Теперь поясняю синтаксис команды GRANT. Вначале идёт название команды, затем мы задаём, какие права будут у пользователя. Подробно о правах пользователей я уже писал, поэтому пояснять это не буду. После описания привилегий идёт предлог "ON". Тут можно указать, к какой таблице или базе данных данный пользователь будет иметь доступ. В данном случае мы написали "* . *", что означает, что данный пользователь имеет доступ к любой таблице любой базы данных. Мы могли бы написать так: "db_name . *", что означало бы, что пользователь может получить доступ к любой таблице базы данных "db_name". Сразу после описания границ доступа идёт предлог "TO", после которого мы задаём имя пользователя "MyUser" и хост, с которого он будет иметь доступ к базе данных. В нашем случае это "localhost". После идёт "IDENTIFIED BY" и затем сразу пароль. И последняя часть - это "WITH GRANT OPTION", в которой мы задаём ограничение на использование ресурсов. О них мы также уже говорили в статье: права пользователя.
Теперь давайте разберём SQL-запрос на изменение существующих пользователей:
GRANT SELECT , INSERT , UPDATE , CREATE , PROCESS ON * . * TO 'MyUser'@'test1.ru' IDENTIFIED BY PASSWORD '565491d704013245' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 10 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 10
Как видите, синтаксис АБСОЛЮТНО такой же, как и на создание нового пользователя. Единственное отличие - это то, что пользователь "MyUser" уже существует. Вот и всё.
И, наконец, удаление пользователя из базы данных. Тут есть один интересный момент. Дело в том, что данные пользователей базы данных сами хранятся в таблицах базы данных. Поэтому, чтобы удалить пользователя надо удалить записи в соответствующих таблицах. Вот код:
DELETE FROM `user` WHERE CONVERT( User USING cp1251 ) = CONVERT( 'MyUser' USING cp1251 ) AND CONVERT( Host USING cp1251 ) = CONVERT( 'test1.ru' USING cp1251 )
DELETE FROM `db` WHERE CONVERT( User USING cp1251 ) = CONVERT( 'MyUser' USING cp1251 ) AND CONVERT( Host USING cp1251 ) = CONVERT( 'test1.ru' USING cp1251 )
DELETE FROM `tables_priv` WHERE CONVERT( User USING cp1251 ) = CONVERT( 'MyUser' USING cp1251 ) AND CONVERT( Host USING cp1251 ) = CONVERT( 'test1.ru' USING cp1251 )
DELETE FROM `columns_priv` WHERE CONVERT( User USING cp1251 ) = CONVERT( 'MyUser' USING cp1251 ) AND CONVERT( Host USING cp1251 ) = CONVERT( 'test1.ru' USING cp1251 )
Много, не спорю, но это единственный способ удалить пользователя. Либо вручную через PHPMyAdmin. Единственное, что надо изменить в этом шаблоне - это имя пользователя и хост, а всё остальное Вам вряд ли придётся менять.
Вот мы с Вами и рассмотрели SQL-запросы на создание, редактирование и удаление пользователей базы данных.
-
- Михаил Русаков
Комментарии (4):
Нифига не понял! Где нужно создать таблицу для добавления в неё чего-нибуть??? У меня только денвер. Хочю вручную создать самую элементарную таблицу, но не знаю где и как!
Ответить
1. http://myrusakov.ru/struktura-basy-dannyh.html 2. http://myrusakov.ru/phpmyadmin.html 3. http://myrusakov.ru/phpmyadmin-table.html
Ответить
А можно в базе создавать ид по текущему времени??? Или как сделать так, чтобы на место удалённого коммента подставлялся его ид при новой записи, а затем уж ид на 1 больше?
Ответить
Функция time() вернёт текущее время, оно будет уникально для данной секунды.
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.