Quiero crear un nuevo usuario en MySQL y darle acceso completo solo 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?
Quiero crear un nuevo usuario en MySQL y darle acceso completo solo 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?
Pruebe esto para crear el usuario:
CREATE USER 'user'@'hostname';
Pruebe 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 otorgar derechos a bases de datos, tablas, etc.
ALL PRIVILEGES- Esto le dice que el usuario tendrá todos los privilegios estándar. Sin embargo, esto no incluye el privilegio de usar el comando GRANT.
dbtest.*- Estas instrucciones MySQL para aplicar estos derechos para su uso en toda la base de datos dbtest. Puede reemplazar el * con nombres de tabla específicos o almacenar rutinas si lo desea.
TO 'user'@'hostname'- 'usuario' es el nombre de usuario de la cuenta de usuario que está creando. Nota: Debe tener las comillas simples allí. 'hostname' le dice a MySQL desde qué hosts se puede conectar el usuario. Si solo lo desea desde la misma máquina, uselocalhost
IDENTIFIED BY 'password' - Como habrás adivinado, esto establece la contraseña para ese usuario.
Sintaxis
Para crear un usuario en MySQL / MariaDB 5.7.6 y superior, use la
CREATE USERsintaxis :luego, para otorgar todo el acceso a la base de datos (p
my_db. ej. ), useGRANTSyntax , p. ej.Donde
ALL( priv_type ) se puede reemplazar con específica privilegio tales comoSELECT,INSERT,UPDATE,ALTER, etc.Luego, para volver a cargar los permisos recién asignados, ejecute:
Ejecutando
Para ejecutar los comandos anteriores, debe ejecutar el
mysqlcomando y escribirlos en prompt, luego cerrar sesión porquitcomando o Ctrl- D.Para ejecutar desde el shell, use el
-eparámetro (reemplaceSELECT 1con uno de los comandos anteriores):o imprimir la declaración de la entrada estándar:
Si tiene acceso denegado con lo anterior, especifique los parámetros
-u(para el usuario) y-p(para la contraseña), o para el acceso a largo plazo establezca sus credenciales~/.my.cnf, por ejemploIntegración de Shell
Para las personas que no están familiarizadas con la sintaxis de MySQL, aquí hay prácticas funciones de shell que son fáciles de recordar y usar (para usarlas, debe cargar las funciones de shell incluidas más abajo).
Aquí hay un ejemplo:
Para usar los comandos anteriores, debe copiar y pegar las siguientes funciones en su archivo rc (p
.bash_profile. Ej. ) Y volver a cargar su shell u obtener el archivo. En este caso simplemente escribasource .bash_profile:Nota: Si prefiere no dejar rastros (como contraseñas) en su historial de Bash, verifique: ¿Cómo evitar que se muestren comandos en el historial de bash?
fuente
~/.my.cnfcomo se sugirió anteriormente.Para crear un usuario y otorgar todos los privilegios en una base de datos.
Inicie sesión en MySQL:
Ahora crea y otorga
Usuario anónimo (solo para pruebas locales)
Alternativamente, si solo desea otorgar acceso completo sin restricciones a una base de datos (por ejemplo, en su máquina local para una instancia de prueba, puede otorgar acceso al usuario anónimo, así:
Se consciente
Esto está bien para los datos basura en desarrollo. No hagas esto con nada que te importe.
fuente
ignore la opción -p , si el usuario mysql no tiene contraseña o simplemente presione el botón "[Entrar]" para omitir . Las cadenas rodeadas de llaves deben reemplazarse con valores reales.
fuente
Puede crear nuevos usuarios utilizando la declaración CREAR USUARIO y otorgarles derechos mediante GRANT .
fuente
Para mí esto funcionó.
dónde
fuente
El siguiente comando funcionará si desea crear un nuevo usuario y darle todo el acceso a una base de datos específica (no todas las bases de datos en su Mysql) en su host local.
Esto otorgará todos los privilegios a una base de datos
test_database(en su casodbTest) a ese usuario en localhost.Verifique qué permisos emitió ese comando anterior a ese usuario ejecutando el siguiente comando.
Por si acaso, si desea limitar el acceso del usuario a una sola tabla
fuente
En caso de que
hostse omita la parte, el valor predeterminado es el símbolo comodín%, lo que permite a todos los hosts.CREATE USER 'service-api';GRANT ALL PRIVILEGES ON the_db.* TO 'service-api' IDENTIFIED BY 'the_password'fuente