Quiero crear un nuevo usuario en MySQL y darle acceso completo sólo a una base de datos, digamos dbTest
, que creo con un comando como create database dbTest;
. ¿Cuáles serían los comandos de MySQL para hacer eso?
Prueba esto para crear el usuario:
CREATE USER 'user'@'hostname';
Prueba esto para darle acceso a la base de datos dbTest
:
GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';
Si está ejecutando el código/sitio accediendo a MySQL en la misma máquina, el nombre de host sería localhost.
Ahora, el desglose.
GRANT
- Este es el comando utilizado para crear usuarios y conceder derechos a las bases de datos, tablas, etc.
Todos los privilegios" - Esto indica que el usuario tendrá todos los privilegios estándar. Sin embargo, esto no incluye el privilegio de usar el comando GRANT.
dbtest.*
- Esto indica a MySQL que aplique estos derechos para su uso en toda la base de datos dbtest. Puede reemplazar el * con nombres de tablas específicas o rutinas de almacenamiento si lo desea.
TO 'user'@'hostname'
- 'user' es el nombre de usuario de la cuenta de usuario que está creando. Nota: Debe tener las comillas simples ahí. 'hostname' le dice a MySQL desde qué hosts puede conectarse el usuario. Si sólo lo quiere desde la misma máquina, use localhost
.
IDENTIFIED BY 'password'
- Como habrás adivinado, esto establece la contraseña para ese usuario.
Inicie sesión en MySQL:
mysql -u root
Ahora cree y conceda
GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';
Alternativamente, si sólo quiere conceder acceso completo sin restricciones a una base de datos (por ejemplo, en su máquina local para una instancia de prueba, puede conceder acceso al usuario anónimo, así:
GRANT ALL PRIVILEGES ON dbTest.* To ''@'hostname'
Esto está bien para datos basura en desarrollo. No haga esto con nada que le interese.