El sistema de cuentas y permisos de PolarDB-X es compatible con MySQL. Además, admite instrucciones como GRANT, REVOKE, SHOW GRANTS, CREATE USER, DROP USER y SET PASSWORD.
Cuentas
Account Permissions
Una cuenta se identifica mediante la combinación de un nombre de usuario y un nombre de host con el formato username@'host'. Las cuentas que comparten el mismo nombre de usuario pero tienen distintos nombres de host son diferentes entre sí. Por ejemplo, lily@30.9.73.96 y lily@30.9.73.100 son dos cuentas independientes y pueden tener contraseñas y permisos distintos.
Cuando usted crea una base de datos en la consola de PolarDB-X, el sistema genera automáticamente dos cuentas de sistema para esa base de datos: una cuenta de administrador y una cuenta de solo lectura. No es posible eliminar estas cuentas integradas ni modificar sus permisos.
El nombre de la cuenta de administrador coincide con el de la base de datos. Por ejemplo, si la base de datos se llama
easydb, la cuenta de administrador también se llamaráeasydb.El nombre de la cuenta de solo lectura corresponde al de la base de datos con el sufijo
_RO. Por ejemplo, si la base de datos se llamaeasydb, la cuenta de solo lectura seráeasydb_RO.
Por ejemplo, si tiene dos bases de datos, dreamdb y andordb, la base de datos dreamdb tendrá una cuenta de administrador llamada dreamdb y una cuenta de solo lectura llamada dreamdb_RO. La base de datos andordb tendrá una cuenta de administrador llamada andordb y una cuenta de solo lectura llamada andordb_RO.
Las cuentas creadas con la instrucción
CREATE USER
en
PolarDB-X
solo existen dentro de
PolarDB-X
. No están relacionadas con ApsaraDB RDS ni se sincronizan con las instancias de backend de ApsaraDB RDS.
Reglas de las cuentas
La cuenta de administrador tiene todos los permisos.
Solo la cuenta de administrador puede crear otras cuentas y otorgar permisos.
La cuenta de administrador está vinculada a una base de datos específica y no tiene permisos sobre otras bases de datos. Al conectarse, esta cuenta únicamente accede a su base de datos asociada. Tampoco otorga permisos sobre otras bases de datos. Por ejemplo, la cuenta de administrador
easydbsolo se conecta a la base de datoseasydb. Además, únicamente otorga permisos sobre la base de datoseasydbo sus tablas a otra cuenta.La cuenta de solo lectura únicamente tiene el permiso SELECT.
Convenciones de nomenclatura
Los nombres de usuario distinguen entre mayúsculas y minúsculas.
Deben contener entre 4 y 20 caracteres.
Deben comenzar con una letra.
Pueden incluir letras mayúsculas, letras minúsculas y dígitos.
Reglas de las contraseñas
Deben contener entre 6 y 20 caracteres.
Pueden incluir letras mayúsculas, letras minúsculas, dígitos y los siguientes caracteres especiales: @#$%^&+=.
Reglas de coincidencia de hosts
El host debe ser una dirección IP. Puede usar los comodines
_y%. El comodín_coincide con un solo carácter, mientras que el comodín%coincide con cero o más caracteres. Un host que contiene un comodín debe ir entre comillas simples ('), por ejemplo,lily@'30.9.%.%'odavid@'%'.Si un intento de inicio de sesión coincide con dos cuentas, tiene prioridad aquella cuyo prefijo de dirección IP coincidente sea más largo. El prefijo es la parte de la dirección IP que aparece antes de cualquier comodín. Por ejemplo, si el sistema tiene dos cuentas,
david@'30.9.12_.xxx'ydavid@'30.9.1%.234', un intento de inicio de sesión del usuariodaviddesde el host30.9.127.xxxutilizará la cuentadavid@'30.9.12_.xxx'.-
Cuando VPC está habilitado, la dirección IP del host cambia.
ImportantePara evitar que las configuraciones de cuentas y permisos queden invalidadas, establezca HOST en '%' para que coincida con cualquier dirección IP.
Permisos
Niveles de permisos
Nivel de base de datos (compatible)
Nivel de tabla (compatible)
Nivel global (aún no compatible)
Nivel de columna (aún no compatible)
Nivel de subprograma (aún no compatible)
Permisos compatibles
PolarDB-X admite ocho permisos básicos a nivel de tabla: CREATE, DROP, ALTER, INDEX, INSERT, DELETE, UPDATE y SELECT.
La instrucción TRUNCATE requiere el permiso DROP sobre la tabla.
La instrucción REPLACE requiere los permisos INSERT y DELETE sobre la tabla.
Las instrucciones CREATE INDEX y DROP INDEX requieren el permiso INDEX sobre la tabla.
La instrucción CREATE SEQUENCE requiere el permiso
CREATEa nivel de base de datos.La instrucción DROP SEQUENCE requiere el permiso
DROPa nivel de base de datos.La instrucción ALTER SEQUENCE requiere el permiso
ALTERa nivel de base de datos.La instrucción INSERT ON DUPLICATE UPDATE requiere tanto el permiso INSERT como el UPDATE sobre la tabla.
Reglas de los permisos
Los permisos están vinculados a una cuenta (
username@'host'), no solo a un nombre de usuario.Al otorgar un permiso, el sistema comprueba que la tabla especificada exista. Si no existe, devuelve un error.
Los niveles de permisos siguen una jerarquía de mayor a menor: nivel global (aún no compatible), nivel de base de datos, nivel de tabla y nivel de columna.
Otorgar un permiso de nivel superior anula cualquier permiso de nivel inferior. Revocar un permiso de nivel superior también revoca los permisos de nivel inferior asociados.
El permiso USAGE no es compatible.
Otorgamiento de permisos en varias bases de datos
En
PolarDB-X
5.3.6 y versiones posteriores, puede otorgar permisos sobre varias bases de datos a una sola cuenta:
En la página Account Management de la consola de Alibaba Cloud PolarDB-X, cree una cuenta y otorgue permisos. Este es el método recomendado.
-
Como alternativa, utilice las instrucciones SQL
CREATE USERyGRANT.NotaSi utiliza instrucciones SQL, tenga en cuenta lo siguiente:
Solo la cuenta de administrador puede crear usuarios y otorgar permisos.
Un administrador solo otorga permisos sobre la base de datos que gestiona. Por ejemplo, si el administrador de la base de datos A crea la cuenta
new_user@'%'y desea que acceda tanto a la base de datos A como a la B, el administrador de A debe otorgar los permisos para A y el administrador de B debe otorgar los permisos para B.
Uso de una cuenta con acceso a varias bases de datos
En PolarDB-X 5.3.6 y versiones posteriores, puede otorgar permisos sobre varias bases de datos a una cuenta. Suponga que una cuenta como
new_user@'%'
tiene los permisos SELECT e INSERT tanto en la base de datos A como en la base de datos B. Se aplican las siguientes limitaciones:
Para consultar una tabla de la base de datos B mientras está conectado a la base de datos A, primero cambie de base de datos al ejecutar
USE B; SELECT * FROM table_in_B;. Las consultas entre bases de datos, comoSELECT * FROM B.table_in_B;, no son compatibles.Para insertar datos en una tabla de la base de datos B mientras está conectado a la base de datos A, ejecute
USE B; INSERT INTO table_in_B VALUES('value');. Las inserciones entre bases de datos, comoINSERT INTO B.table_in_B VALUES('value');, no son compatibles.Este mismo principio aplica para las demás instrucciones SQL.
Instrucciones
Crear una cuenta (CREATE USER)
-
Sintaxis
CREATE USER user_specification [, user_specification] ... user_specification: user [ auth_option ] auth_option: IDENTIFIED BY 'auth#string' -
Ejemplos
-
Cree una cuenta llamada
lilycon la contraseña123456. Esta cuenta solo se conecta desde el host 30.9.73.96.CREATE USER lily@30.9.73.96 IDENTIFIED BY '123456'; -
Cree una cuenta llamada
davidque se conecte desde cualquier host. Esta cuenta no tiene contraseña.CREATE USER david@'%';
-
Eliminar una cuenta (DROP USER)
-
Sintaxis
DROP USER user [, user] ... -
Ejemplo
Elimine la cuenta
lily@30.9.73.96:DROP USER lily@30.9.73.96;
Cambiar la contraseña de una cuenta (SET PASSWORD)
-
Sintaxis
SET PASSWORD FOR user = password_option password_option: { PASSWORD('auth_string') } -
Ejemplo
Cambie la contraseña de la cuenta
lily@30.9.73.96
a
123456
.
SET PASSWORD FOR lily@30.9.73.96 = PASSWORD('123456')
Otorgar permisos a una cuenta (GRANT)
-
Sintaxis
GRANT priv_type[, priv_type] ... ON priv_level TO user_specification [, user_specification] ... [WITH GRANT OPTION] priv_level: { | db_name.* | db_name.tbl_name | tbl_name } user_specification: user [ auth_option ] auth_option: { IDENTIFIED BY 'auth#string' }NotaSi la cuenta indicada en una instrucción
GRANT
no existe, la instrucción falla a menos que incluya una cláusula
IDENTIFIED BY
. Si proporciona una cláusula
IDENTIFIED BY
, el sistema crea la cuenta y le otorga los permisos especificados.
-
Ejemplos
-
Para la base de datos
easydb, cree una cuenta llamadadavidque se conecte desde cualquier host y tenga todos los permisos sobre dicha base de datos.# Method 1: Create the account, then grant permissions. CREATE USER david@'%' IDENTIFIED BY 'your#password'; GRANT ALL PRIVILEGES ON easydb.* to david@'%'; # Method 2: Create the account and grant permissions in a single statement. GRANT ALL PRIVILEGES ON easydb.* to david@'%' IDENTIFIED BY 'your#password'; -
Para la base de datos
easydb, cree una cuenta llamadahansonque se conecte desde cualquier host y tenga todos los permisos sobre la tablaeasydb.employees.GRANT ALL PRIVILEGES ON easydb.employees to hanson@'%' IDENTIFIED BY 'your#password'; -
Para la base de datos
easydb, cree una cuenta llamadahansonque solo se conecte desde el host 192.168.3.10 y tenga los permisos INSERT y SELECT sobre la tablaeasydb.emp.GRANT INSERT,SELECT ON easydb.emp to hanson@'192.168.3.10' IDENTIFIED BY 'your#password'; -
Para la base de datos
easydb, cree una cuenta de solo lectura llamadaactroque se conecte desde cualquier host.GRANT SELECT ON easydb.* to actro@'%' IDENTIFIED BY 'your#password';
-
Revocar permisos (REVOKE)
-
Sintaxis
-
Revoca permisos específicos de una cuenta en el nivel indicado por
priv_level.REVOKE priv_type [, priv_type] ... ON priv_level -
Revoca todos los permisos a nivel de base de datos y de tabla de un usuario.
REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...
-
-
Ejemplos
-
Revoque los permisos CREATE, DROP e INDEX sobre la tabla
easydb.empde la cuentahanson@'%'.REVOKE CREATE,DROP,INDEX ON easydb.emp FROM hanson@'%'; -
Revoque todos los permisos de la cuenta
lily@30.9.73.96.REVOKE ALL PRIVILEGES,GRANT OPTION FROM lily@30.9.73.96;NotaPara garantizar la compatibilidad con MySQL, debe incluir la cláusula
GRANT OPTION
.
-
Consultar permisos otorgados (SHOW GRANTS)
-
Sintaxis
SHOW GRANTS[ FOR user@host]; -
Ejemplo
SHOW GRANTS FOR user1@host;
En PolarDB-X 5.3.6 y versiones posteriores, la instrucción
SHOW GRANTS
solo muestra los permisos del usuario actual. Para consultar la información de todas las cuentas y permisos, utilice la consola de Alibaba Cloud
PolarDB-X
.