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 USER
sintaxis :luego, para otorgar todo el acceso a la base de datos (p
my_db
. ej. ), useGRANT
Syntax , 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
mysql
comando y escribirlos en prompt, luego cerrar sesión porquit
comando o Ctrl- D.Para ejecutar desde el shell, use el
-e
parámetro (reemplaceSELECT 1
con 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.cnf
como 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
host
se 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