Создание нового пользователя в MySQL с полным доступом к одной базе данных
Я хочу создать нового пользователя в MySQL и предоставить ему полный доступ только к одной базе данных, скажем, dbTest
, которую я создаю с помощью команды create database dbTest;
. Какие MySQL команды мне нужно выполнить для этого?
5 ответ(ов)
Попробуйте это, чтобы создать пользователя:
CREATE USER 'user'@'hostname';
А затем, чтобы предоставить ему доступ к базе данных dbTest
, выполните:
GRANT ALL PRIVILEGES ON dbTest.* TO 'user'@'hostname' IDENTIFIED BY 'password';
Если вы запускаете код/сайт, который обращается к MySQL на той же машине, укажите в качестве hostname localhost
.
Теперь разберем по пунктам:
GRANT
— это команда, используемая для создания пользователей и предоставления прав на базы данных, таблицы и т.д.ALL PRIVILEGES
— это указывает, что пользователю будут даны все стандартные привилегии. Однако, это не включает привилегию на использование команды GRANT.dbTest.*
— эта часть инструкции MySQL применять указанные права для всей базы данных dbTest. Вы можете заменить*
на конкретные имена таблиц или хранимые процедуры, если это необходимо.TO 'user'@'hostname'
—'user'
— это имя создаваемого пользователя. Обратите внимание: одинарные кавычки обязателен.'hostname'
указывает MySQL, с каких хостов пользователь может подключаться. Если вы хотите, чтобы доступ был только с той же машины, используйтеlocalhost
.IDENTIFIED BY 'password'
— как вы могли догадаться, это устанавливает пароль для данного пользователя.
Создание пользователя и предоставление всех привилегий на базу данных
Войдите в MySQL:
mysql -u root
Теперь создайте пользователя и предоставьте привилегии:
GRANT ALL PRIVILEGES ON dbTest.* TO 'user'@'hostname' IDENTIFIED BY 'password';
Анонимный пользователь (только для локального тестирования)
Если вы хотите предоставить полный неограниченный доступ к базе данных (например, на вашем локальном компьютере для тестового экземпляра), вы можете предоставить доступ анонимному пользователю следующим образом:
GRANT ALL PRIVILEGES ON dbTest.* TO ''@'hostname';
Обратите внимание
Это приемлемо для тестовых данных в процессе разработки. Не делайте этого с чем-то, что вам действительно нужно.
Для того чтобы предоставить все привилегии пользователю на конкретную базу данных dbTest
, вы можете использовать следующую команду в MySQL:
$ mysql -u root -p -e "grant all privileges on dbTest.* to '{user}'@'{host}' identified by '{long-password}'; flush privileges;"
Обратите внимание на следующие моменты:
- Замените
{user}
на имя пользователя, которому вы хотите предоставить привилегии. - Замените
{host}
на хост, с которого этот пользователь будет подключаться (можно использовать'%'
, чтобы разрешить доступ с любого хоста). - Замените
{long-password}
на необходимый пароль для пользователя. - Если у MySQL пользователя нет пароля, вы можете исключить опцию
-p
или просто нажать клавишуEnter
, чтобы пропустить ввод пароля.
После выполнения данной команды, пользователь получит все привилегии на базы данных dbTest
и вам нужно будет выполнить flush privileges;
, чтобы изменения вступили в силу.
Это сработало для меня.
CREATE USER 'spowner'@'localhost' IDENTIFIED BY '1234';
GRANT ALL PRIVILEGES ON test.* TO 'spowner'@'localhost';
FLUSH PRIVILEGES;
где
spowner
: имя пользователя1234
: пароль пользователяspowner
test
: база данных, к которойspowner
имеет права доступа
Команда, приведенная ниже, сработает, если вы хотите создать нового пользователя и предоставить ему все права на конкретную базу данных (не на все базы данных в MySQL) на вашем локальном хосте.
GRANT ALL PRIVILEGES ON test_database.* TO 'user'@'localhost' IDENTIFIED BY 'password';
Эта команда предостав
Как восстановить дамп-файл из mysqldump?
Экспорт схемы без данных
SQL: выбрать только строки с максимальным значением в столбце
Когда использовать одинарные кавычки, двойные кавычки и обратные кавычки в MySQL
Postgres: Как повысить пользователя до суперпользователя?