ver usuarios usuario remoto privilegios para eliminar create crear all acceso mysql access-control database-security

usuarios - ver privilegios usuario mysql



Crea un nuevo usuario en MySQL y dale acceso completo a una base de datos (7)

Para crear un usuario y otorgar todos los privilegios en una base de datos.

Inicia sesión en MySQL:

mysql -u root

Ahora crea y concede

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

Usuario anónimo (solo para pruebas locales)

Alternativamente, si solo desea otorgar acceso completo y 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, por ejemplo)

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

Estar atentos

Esto está bien para datos basura en desarrollo. No hagas esto con nada que te importe.

Quiero crear un nuevo usuario en MySQL y darle acceso completo a una sola base de datos, por ejemplo, dbTest , que creo con un comando como create database dbTest; . ¿Cuáles serían los comandos de MySQL para hacer eso?


Sintaxis

Para crear un usuario en MySQL / MariaDB 5.7.6 y superior, use la sintaxis CREATE USER :

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

luego, para otorgar todo el acceso a la base de datos (por ejemplo, my_db ), use GRANT Syntax , por ejemplo

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

Donde ALL ( priv_type ) puede ser reemplazado por un privilegio específico como SELECT , INSERT , UPDATE , ALTER , etc.

Luego, para recargar los permisos recién asignados, ejecute:

FLUSH PRIVILEGES;

Ejecutando

Para ejecutar los comandos anteriores, debe ejecutar el comando mysql y escribirlos en prompt, luego cerrar sesión con el comando quit o con Ctrl - D .

Para ejecutar desde el shell, use el parámetro -e (reemplace SELECT 1 con uno de los comandos anteriores):

$ mysql -e "SELECT 1"

o imprimir declaración desde la entrada estándar:

$ echo "FOO STATEMENT" | mysql

Si tiene acceso denegado con lo anterior, especifique los parámetros -u (para usuario) y -p (para contraseña), o para el acceso a largo plazo, configure sus credenciales en ~/.my.cnf , por ejemplo

[client] user=root password=root

Integración de shell

Para las personas que no están familiarizadas con la sintaxis de MySQL, aquí hay funciones prácticas de shell que son fáciles de recordar y usar (para usarlas, debe cargar las funciones de shell incluidas más abajo).

Aquí está el ejemplo:

$ 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

Para usar los comandos anteriores, necesita copiar y pegar las siguientes funciones en su archivo rc (por ejemplo, .bash_profile ) y volver a cargar su shell o fuente el archivo. En este caso, simplemente escriba 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''" }


El siguiente comando funcionará si desea crear un nuevo usuario, asígnele todo el acceso a una base de datos específica (no todas las bases de datos en su Mysql) en su host local.

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

Esto otorgará todos los privilegios a una base de datos test_database (en su caso dbTest ) para ese usuario en localhost.

Verifique qué permisos emitió el comando anterior a ese usuario ejecutando el comando siguiente.

SHOW GRANTS FOR ''user''@''localhost''

Por si acaso, si desea limitar el acceso de los usuarios a una sola tabla

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


Intenta esto para crear el usuario:

CREATE USER ''user''@''hostname'';

Intenta 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 que accede a MySQL en la misma máquina, hostname sería localhost.

Ahora, la ruptura.

GRANT : este es el comando utilizado para crear usuarios y otorgar derechos a bases de datos, tablas, etc.

ALL PRIVILEGES : esto le indica que el usuario tendrá todos los privilegios estándar. Sin embargo, esto no incluye el privilegio de usar el comando GRANT.

dbtest.* : estas instrucciones de 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 rutinas de almacenamiento 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í. ''nombre de host'' le dice a MySQL desde qué hosts se puede conectar el usuario. Si solo lo desea de la misma máquina, use localhost

IDENTIFIED BY ''password'' - Como habrías adivinado, esto establece la contraseña para ese usuario.


Para mí esto funcionó.

CREATE USER ''spowner''@''localhost'' IDENTIFIED BY ''1234''; GRANT ALL PRIVILEGES ON test.* To ''spowner''@''localhost''; FLUSH PRIVILEGES;

dónde

  • spowner: nombre de usuario
  • 1234: contraseña del propietario
  • prueba: la base de datos ''spowner'' tiene derecho de acceso a

Puede crear nuevos usuarios utilizando la declaración CREATE USER y otorgarles derechos utilizando GRANT .


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

ignore la opción -p , si el usuario de mysql no tiene contraseña o simplemente presione el botón "[Enter]" para pasar por alto. las cadenas rodeadas de llaves deben reemplazarse con los valores reales.