Question Créer un nouvel utilisateur dans MySQL et lui donner un accès complet à une base de données


Je veux créer un nouvel utilisateur dans MySQL et lui donner un accès complet à une seule base de données, par exemple dbTest, que je crée avec une commande comme create database dbTest;. Quelles seraient les commandes MySQL pour cela?


481
2017-11-12 06:10


origine


Réponses:


Essayez ceci pour créer l'utilisateur:

CREATE USER 'user'@'hostname';

Essayez ceci pour lui donner accès à la base de données dbTest:

GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';

Si vous exécutez le code / site accédant à MySQL sur le même ordinateur, le nom d'hôte serait localhost.

Maintenant, la panne.

GRANT - C'est la commande utilisée pour créer des utilisateurs et accorder des droits aux bases de données, tables, etc.

ALL PRIVILEGES - Cela indique que l'utilisateur aura tous les privilèges standard. Cela n'inclut cependant pas le privilège d'utiliser la commande GRANT.

dbtest.* - Cette instruction MySQL pour appliquer ces droits pour une utilisation dans toute la base de données dbtest. Vous pouvez remplacer le * par des noms de tables spécifiques ou des routines de stockage si vous le souhaitez.

TO 'user'@'hostname' - 'utilisateur' est le nom d'utilisateur du compte d'utilisateur que vous créez. Note: Vous devez avoir les guillemets simples là-dedans. 'hostname' indique à MySQL de quels hôtes l'utilisateur peut se connecter. Si vous ne le voulez que de la même machine, utilisez localhost

IDENTIFIED BY 'password' - Comme vous l'auriez deviné, cela définit le mot de passe pour cet utilisateur.


676
2017-11-12 06:14



Syntaxe

Pour créer un utilisateur MySQL / MariaDB 5.7.6 et supérieur, utilisez CREATE USER syntaxe:

CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'new_password';

puis accorder tout accès à la base de données (par ex. my_db), utilisation GRANT Syntaxe, par exemple.

GRANT ALL ON my_db.* TO 'new_user'@'localhost';

ALL (priv_type) peut être remplacé par un privilège spécifique tel que SELECT, INSERT, UPDATE, ALTER, etc.

Ensuite, pour recharger les autorisations nouvellement attribuées, exécutez:

FLUSH PRIVILEGES;

L'exécution

Pour exécuter les commandes ci-dessus, vous devez exécuter mysql commande et tapez-les dans l'invite, puis déconnectez-vous par quit commande ou Ctrl-.

Pour exécuter à partir de shell, utilisez -e paramètre (remplacer SELECT 1 avec l'une des commandes ci-dessus):

$ mysql -e "SELECT 1"

ou imprimer un relevé à partir de l'entrée standard:

$ echo "FOO STATEMENT" | mysql

Si vous avez Accès refusé avec ci-dessus, spécifiez -u (pour l'utilisateur) et -p (pour mot de passe) paramètres, ou pour l'accès à long terme définir vos informations d'identification dans ~/.my.cnf, par exemple.

[client]
user=root
password=root

Intégration Shell

Pour les personnes qui ne connaissent pas la syntaxe de MySQL, voici des fonctions de shell pratiques faciles à mémoriser et à utiliser (pour les utiliser, vous devez charger les fonctions du shell plus bas).

Voici un exemple:

$ 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

Pour utiliser les commandes ci-dessus, vous devez copier et coller les fonctions suivantes dans votre rc fichier (par ex. .bash_profile) et rechargez votre shell ou source le fichier. Dans ce cas, tapez simplement source .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'"
}

209
2018-03-23 23:51



Pour créer un utilisateur et accorder tous les privilèges sur une base de données.

Connectez-vous à MySQL:

mysql -u root

Maintenant créer et accorder

GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';

Utilisateur anonyme (uniquement pour les tests locaux)

Alternativement, si vous souhaitez simplement accorder un accès illimité à une base de données (par exemple sur votre machine locale pour une instance de test, vous pouvez accorder l'accès à l'utilisateur anonyme, comme ceci:

GRANT ALL PRIVILEGES ON dbTest.* To ''@'hostname'

Savoir

C'est bien pour les données indésirables en développement. Ne faites pas cela avec tout ce qui vous intéresse.


54
2018-03-24 09:14



$ mysql -u root -p -e "grant all privileges on dbTest.* to
`{user}`@`{host}` identified by '{long-password}'; flush privileges;"

ignorer -p option, si l'utilisateur mysql n'a pas de mot de passe ou appuyez simplement sur le bouton "[Enter]" pour contourner. les chaînes entourées d'accolades doivent être remplacées par des valeurs réelles.


14
2018-06-22 12:21



Vous pouvez créer de nouveaux utilisateurs en utilisant le CRÉER UN UTILISATEUR déclaration, et leur donner des droits en utilisant SUBVENTION.


13
2017-11-12 06:17



La commande ci-dessous fonctionnera si vous voulez créer un nouvel utilisateur lui donner tous les accès à une base de données spécifique (pas toutes les bases de données dans votre Mysql) sur votre localhost.

GRANT ALL PRIVILEGES ON test_database.* TO 'user'@'localhost' IDENTIFIED BY 'password';

Cela accordera tous les privilèges à une base de données test_database (dans ton cas dbTest) à cet utilisateur sur localhost.

Vérifiez les autorisations émises ci-dessus pour cet utilisateur en exécutant la commande ci-dessous.

SHOW GRANTS FOR 'user'@'localhost'

Juste au cas où, si vous voulez limiter l'accès de l'utilisateur à une seule table

GRANT ALL ON mydb.table_name TO 'someuser'@'host';

1
2018-03-12 14:31