Todos los productos
Search
Centro de documentos

PolarDB:Sistema de cuentas y permisos

Última actualización: Sep 05, 2026

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 llama easydb, 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.

Nota

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 easydb solo se conecta a la base de datos easydb. Además, únicamente otorga permisos sobre la base de datos easydb o 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.%.%' o david@'%'.

  • 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' y david@'30.9.1%.234', un intento de inicio de sesión del usuario david desde el host 30.9.127.xxx utilizará la cuenta david@'30.9.12_.xxx'.

  • Cuando VPC está habilitado, la dirección IP del host cambia.

    Importante

    Para 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 CREATE a nivel de base de datos.

  • La instrucción DROP SEQUENCE requiere el permiso DROP a nivel de base de datos.

  • La instrucción ALTER SEQUENCE requiere el permiso ALTER a 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 USER y GRANT.

    Nota

    Si utiliza instrucciones SQL, tenga en cuenta lo siguiente:

    1. Solo la cuenta de administrador puede crear usuarios y otorgar permisos.

    2. 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, como SELECT * 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, como INSERT 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 lily con la contraseña 123456. 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 david que 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'
    }
                
    Nota

    Si 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 llamada david que 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 llamada hanson que se conecte desde cualquier host y tenga todos los permisos sobre la tabla easydb.employees.

      GRANT ALL PRIVILEGES ON easydb.employees to hanson@'%' 
      IDENTIFIED BY 'your#password';    
    • Para la base de datos easydb, cree una cuenta llamada hanson que solo se conecte desde el host 192.168.3.10 y tenga los permisos INSERT y SELECT sobre la tabla easydb.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 llamada actro que 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.emp de la cuenta hanson@'%'.

      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;       
      Nota

      Para 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;       
Nota

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

.