Попробуйте следующее:
GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';
Если вы используете код/сайт для доступа к MySQL на одном компьютере, имя хоста будет localhost.
Теперь сломайте.
GRANT
- это команда, используемая для создания пользователей и предоставления прав на базы данных, таблицы и т.д.
ALL PRIVILEGES
- Это говорит о том, что у пользователя будут все стандартные привилегии. Однако это не означает привилегии использовать команду GRANT.
dbtest.*
- Это инструкции MySQL для применения этих прав для использования во всей базе данных dbtest. Вы можете заменить * на конкретные имена таблиц или сохранить подпрограммы, если хотите.
TO 'user'@'hostname'
- 'user' - имя пользователя создаваемой учетной записи пользователя. Примечание. У вас должны быть одиночные кавычки. "hostname" сообщает MySQL, с каких хостов пользователь может подключиться. Если вы хотите использовать его только на одном компьютере, используйте localhost
IDENTIFIED BY 'password'
- Как вы уже догадались, это устанавливает пароль для этого пользователя.
Чтобы создать пользователя в MySQL/MariaDB 5.7.6 и выше, используйте CREATE USER
синтаксис:
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'new_password';
затем предоставить весь доступ к базе данных (например, my_db
), используйте GRANT
Синтаксис, например
GRANT ALL ON my_db.* TO 'new_user'@'localhost';
Где ALL
(priv_type) можно заменить специальными привилегиями, такими как SELECT
, INSERT
, UPDATE
, ALTER
и т.д.
Затем перезагрузите вновь назначенные разрешения:
FLUSH PRIVILEGES;
Чтобы выполнить команды выше, вам нужно запустить команду mysql
и ввести их в приглашение, затем выйти из системы командой quit
или Ctrl - D.
Для запуска из оболочки используйте параметр -e
(замените SELECT 1
на одну из приведенных выше команд):
$ mysql -e "SELECT 1"
или инструкцию печати со стандартного ввода:
$ echo "FOO STATEMENT" | mysql
Если у вас есть Access denied with above, укажите параметры -u
(для пользователя) и -p
(для пароля) или для долгосрочного доступа установите свои учетные данные в ~/.my.cnf
, например
[client]
user=root
password=root
Для людей, не знакомых с синтаксисом MySQL, здесь есть удобные функции оболочки, которые легко запомнить и использовать (чтобы использовать их, вам нужно загрузить функции оболочки, включенные дальше).
Вот пример:
$ mysql-create-user admin mypass
| CREATE USER 'admin'@'localhost' IDENTIFIED BY 'mypass'
$ mysql-create-db foo
| CREATE DATABASE IF NOT EXISTS foo
$ mysql-grant-db admin foo
| GRANT ALL ON foo.* TO 'admin'@'localhost'
| FLUSH PRIVILEGES
$ mysql-show-grants admin
| SHOW GRANTS FOR 'admin'@'localhost'
| Grants for admin@localhost
| GRANT USAGE ON *.* TO 'admin'@'localhost' IDENTIFIED BY PASSWORD '*6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4' |
| GRANT ALL PRIVILEGES ON `foo`.* TO 'admin'@'localhost'
$ mysql-drop-user admin
| DROP USER 'admin'@'localhost'
$ mysql-drop-db foo
| DROP DATABASE IF EXISTS foo
Чтобы использовать вышеприведенные команды, вам необходимо скопировать и вставить следующие функции в ваш файл rc (например, .bash_profile
) и перезагрузить оболочку:
# Create user in MySQL/MariaDB.
mysql-create-user() {
[ -z "$2" ] && { echo "Usage: mysql-create-user (user) (password)"; return; }
mysql -ve "CREATE USER '$1'@'localhost' IDENTIFIED BY '$2'"
}
# Delete user from MySQL/MariaDB
mysql-drop-user() {
[ -z "$1" ] && { echo "Usage: mysql-drop-user (user)"; return; }
mysql -ve "DROP USER '$1'@'localhost';"
}
# Create new database in MySQL/MariaDB.
mysql-create-db() {
[ -z "$1" ] && { echo "Usage: mysql-create-db (db_name)"; return; }
mysql -ve "CREATE DATABASE IF NOT EXISTS $1"
}
# Drop database in MySQL/MariaDB.
mysql-drop-db() {
[ -z "$1" ] && { echo "Usage: mysql-drop-db (db_name)"; return; }
mysql -ve "DROP DATABASE IF EXISTS $1"
}
# Grant all permissions for user for given database.
mysql-grant-db() {
[ -z "$2" ] && { echo "Usage: mysql-grand-db (user) (database)"; return; }
mysql -ve "GRANT ALL ON $2.* TO '$1'@'localhost'"
mysql -ve "FLUSH PRIVILEGES"
}
# Show current user permissions.
mysql-show-grants() {
[ -z "$1" ] && { echo "Usage: mysql-show-grants (user)"; return; }
mysql -ve "SHOW GRANTS FOR '$1'@'localhost'"
}
Войдите в MySQL:
mysql -u root
Теперь создайте и предоставите
GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';
В качестве альтернативы, если вы просто хотите предоставить полный неограниченный доступ к базе данных (например, на вашем локальном компьютере для тестового экземпляра, вы можете предоставить доступ к анонимному пользователю, например:
GRANT ALL PRIVILEGES ON dbTest.* To ''@'hostname'
Вы можете создавать новых пользователей с помощью инструкции CREATE USER и предоставлять права на них с помощью GRANT.
$ mysql -u root -p -e "grant all privileges on dbTest.* to
`{user}`@`{host}` identified by '{long-password}'; flush privileges;"
игнорировать -p, если у пользователя mysql нет пароля или, просто нажмите кнопку "[Enter]" для обхода. строки, окруженные фигурными скобками, должны быть заменены фактическими значениями.
Приведенная ниже команда будет работать, если вы хотите, чтобы новый пользователь дал ему доступ ко всей базе данных (не все базы данных в вашем Mysql) на вашем локальном хосте.
GRANT ALL PRIVILEGES ON test_database.* TO 'user'@'localhost' IDENTIFIED BY 'password';
Это предоставит всем привилегиям одну базу данных test_database
(в вашем случае dbTest
) этому пользователю на localhost.
Проверьте, какие права выданы вышеприведенной команде для этого пользователя, выполнив приведенную ниже команду.
SHOW GRANTS FOR 'user'@'localhost'
На всякий случай, если вы хотите ограничить доступ пользователя только к одной отдельной таблице
GRANT ALL ON mydb.table_name TO 'someuser'@'host';