Я хочу создать нового пользователя в MySQL и дать ему полный доступ только к одной базе данных, скажем dbTest
, которую я создаю с помощью команды like create database dbTest;
. Какими будут команды MySQL для этого?
Я хочу создать нового пользователя в MySQL и дать ему полный доступ только к одной базе данных, скажем dbTest
, которую я создаю с помощью команды like create database dbTest;
. Какими будут команды MySQL для этого?
Попробуйте это, чтобы создать пользователя:
CREATE USER 'user'@'hostname';
Попробуйте это, чтобы дать ему доступ к базе данных dbTest
:
GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';
Если вы выполняете код / сайт, обращающийся к MySQL на той же машине, имя хоста будет localhost.
Теперь сломаться.
GRANT
- Эта команда используется для создания пользователей и предоставления прав на базы данных, таблицы и т. Д.
ALL PRIVILEGES
- Это говорит о том, что у пользователя будут все стандартные привилегии. Это не включает привилегию использовать команду GRANT как бы то ни было.
dbtest.*
- Эта инструкция MySQL для применения этих прав для использования во всей базе данных dbtest. Вы можете заменить * определенными именами таблиц или хранить процедуры, если хотите.
TO 'user'@'hostname'
- «пользователь» - это имя пользователя учетной записи, которую вы создаете. Примечание: там должны быть одинарные кавычки. «hostname» сообщает MySQL, с каких хостов пользователь может подключиться. Если вы хотите использовать его только на одной машине, используйтеlocalhost
IDENTIFIED BY 'password'
- Как вы уже догадались, это устанавливает пароль для этого пользователя.
Синтаксис
Чтобы создать пользователя в MySQL / MariaDB 5.7.6 и выше, используйте
CREATE USER
синтаксис :затем, чтобы предоставить всем доступ к базе данных (например
my_db
), используйтеGRANT
синтаксис , напримерГде
ALL
( priv_type ) может быть заменен на определенной привилегии , такие какSELECT
,INSERT
,UPDATE
,ALTER
, и т.д.Затем для перезагрузки вновь назначенных разрешений выполните:
проведение
Для запуска вышеуказанных команд вам нужно запустить
mysql
команду и ввести их в командной строке, а затем выйти из системы поquit
команде или Ctrl- D.Для запуска из оболочки используйте
-e
параметр (заменитеSELECT 1
на одну из приведенных выше команд):или выведите выписку из стандартного ввода:
Если у вас есть Доступ запрещен с помощью выше, укажите
-u
(для пользователя) и-p
(для пароля) параметры, или для долгосрочного доступа установите свои учетные данные~/.my.cnf
, например,Интеграция с оболочкой
Для людей, не знакомых с синтаксисом MySQL, вот удобные функции оболочки, которые легко запомнить и использовать (чтобы использовать их, вам нужно загрузить функции оболочки, включенные ниже).
Вот пример:
Чтобы использовать вышеупомянутые команды, вам нужно скопировать и вставить следующие функции в ваш rc- файл (например
.bash_profile
) и перезагрузить вашу оболочку или исходный файл. В этом случае просто введитеsource .bash_profile
:Примечание. Если вы предпочитаете не оставлять следы (например, пароли) в своей истории Bash, установите флажок: Как предотвратить отображение команд в истории Bash?
источник
~/.my.cnf
как предложено выше.Создать пользователя и предоставить все привилегии для базы данных.
Войдите в MySQL:
Теперь создайте и предоставьте
Анонимный пользователь (только для локального тестирования)
В качестве альтернативы, если вы просто хотите предоставить полный неограниченный доступ к базе данных (например, на локальном компьютере для тестового экземпляра, вы можете предоставить доступ анонимному пользователю, например, так:
Знать
Это хорошо для ненужных данных в разработке. Не делайте этого с тем, что вас волнует.
источник
игнорируйте опцию -p , если у пользователя mysql нет пароля, или просто нажмите кнопку «[Enter]», чтобы пропустить. строки, окруженные фигурными скобками, необходимо заменить фактическими значениями.
источник
Вы можете создавать новых пользователей с помощью оператора CREATE USER и предоставлять им права с помощью GRANT .
источник
Для меня это сработало.
где
источник
Команда ниже будет работать, если вы хотите создать нового пользователя и предоставить ему все права доступа к определенной базе данных (не ко всем базам данных в вашем Mysql) на вашем локальном хосте.
Это предоставит все привилегии одной базе данных
test_database
(в вашем случаеdbTest
) этому пользователю на локальном хосте.Проверьте, какие разрешения предоставлены вышеупомянутой командой этому пользователю, выполнив приведенную ниже команду.
На всякий случай, если вы хотите ограничить доступ пользователя только одной таблицей
источник
В случае, если
host
часть не указана, по умолчанию используется подстановочный знак%
, разрешающий все узлы.CREATE USER 'service-api';
GRANT ALL PRIVILEGES ON the_db.* TO 'service-api' IDENTIFIED BY 'the_password'
источник