Создание нового пользователя в 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: пароль пользователяspownertest: база данных, к которойspownerимеет права доступа
Команда, приведенная ниже, сработает, если вы хотите создать нового пользователя и предоставить ему все права на конкретную базу данных (не на все базы данных в MySQL) на вашем локальном хосте.
GRANT ALL PRIVILEGES ON test_database.* TO 'user'@'localhost' IDENTIFIED BY 'password';
Эта команда предостав
Как восстановить дамп-файл из mysqldump?
Экспорт схемы без данных
'IF' в операторе 'SELECT' – выбор выходного значения в зависимости от значений столбца
MySQL: @переменная против переменной. В чем разница?
Возможно ли переименовать объединённый столбец при выполнении INNER JOIN?