菜鸟科技网

数据库创建用户命令有哪些?

在数据库管理中,创建用户是基础且关键的操作,不同数据库系统(如MySQL、PostgreSQL、Oracle、SQL Server等)创建用户的命令语法和参数存在差异,但核心目标都是赋予特定身份访问数据库的权限,以下将详细讲解主流数据库的创建用户命令,包括语法、参数说明、示例及注意事项。

数据库创建用户命令有哪些?-图1
(图片来源网络,侵删)

MySQL 创建用户命令

MySQL 中创建用户主要使用 CREATE USER 语句,语法如下:

CREATE USER 'username'@'host' [IDENTIFIED BY [PASSWORD] 'password'];
  • 参数说明
    • 'username':用户名,需符合 MySQL 命名规则,通常建议使用字母、数字及下划线。
    • 'host':允许登录的主机地址,可以是具体 IP(如 '192.168.1.100')、通配符(如 表示所有主机,'localhost' 表示本地登录)。
    • IDENTIFIED BY:用于设置用户密码,'password' 为明文密码;若使用 PASSWORD 关键字,则需传入 MySQL 加密后的密码字符串(通过 PASSWORD('password') 生成)。

示例

  1. 创建允许任意主机登录的用户 test_user,密码为 Test@123
    CREATE USER 'test_user'@'%' IDENTIFIED BY 'Test@123';
  2. 创建仅本地登录的用户 local_admin,密码为 Admin#456
    CREATE USER 'local_admin'@'localhost' IDENTIFIED BY 'Admin#456';

注意事项

  • 创建用户后需通过 FLUSH PRIVILEGES; 刷新权限(部分 MySQL 版本可能自动刷新)。
  • 密码需满足 MySQL 的密码策略要求(长度、复杂度等),可通过 SHOW VARIABLES LIKE 'validate_password%'; 查看策略。

PostgreSQL 创建用户命令

PostgreSQL 中创建用户使用 CREATE USERCREATE ROLE(两者功能基本一致,USER 默认具有登录权限),语法如下:

数据库创建用户命令有哪些?-图2
(图片来源网络,侵删)
CREATE USER username [WITH option [...]];
  • 参数说明
    • option:可选参数,包括密码、权限属性等,常用选项如下表所示:
选项 作用说明 示例
PASSWORD 'password' 设置用户密码 PASSWORD 'Postgres@789'
SUPERUSER 赋予超级用户权限(默认为 NOSUPERUSER SUPERUSER
CREATEDB 允许用户创建数据库 CREATEDB
CREATEROLE 允许用户创建/管理角色 CREATEROLE
LOGIN 允许用户登录(默认为 NOLOGIN LOGIN

示例

  1. 创建普通用户 pg_user,密码为 Pg@2023,允许登录和创建数据库:
    CREATE USER pg_user WITH PASSWORD 'Pg@2023' CREATEDB LOGIN;
  2. 创建超级用户 super_admin
    CREATE USER super_admin WITH SUPERUSER PASSWORD 'Super@123';

注意事项

  • PostgreSQL 用户需通过 ALTER ROLE 修改权限,如撤销创建数据库权限:ALTER ROLE pg_user NOCREATEDB;
  • 密码策略可通过 pg_hba.conf 文件配置,如要求加密存储密码。

Oracle 创建用户命令

Oracle 中创建用户使用 CREATE USER 语句,语法如下:

CREATE USER username IDENTIFIED BY password
[DEFAULT TABLESPACE tablespace_name]
[TEMPORARY TABLESPACE temp_tablespace_name]
[QUOTA size | UNLIMITED ON tablespace_name]
[ACCOUNT LOCK | UNLOCK];
  • 参数说明
    • IDENTIFIED BY:设置用户密码,Oracle 默认要求密码复杂度(至少8位,包含字母、数字、特殊字符)。
    • DEFAULT TABLESPACE:指定用户默认表空间(如 users),若未指定则使用数据库默认表空间。
    • TEMPORARY TABLESPACE:指定临时表空间,用于排序、查询等操作。
    • QUOTA:分配用户在指定表空间的配额,UNLIMITED 表示无限制。
    • ACCOUNT LOCK/UNLOCK:锁定或解锁用户(默认为 UNLOCK)。

示例

数据库创建用户命令有哪些?-图3
(图片来源网络,侵删)
  1. 创建用户 ora_user,密码为 Oracle@456,默认表空间为 users,临时表空间为 temp,并授予 users 表空间 100M 配额:
    CREATE USER ora_user IDENTIFIED BY Oracle@456
    DEFAULT TABLESPACE users
    TEMPORARY TABLESPACE temp
    QUOTA 100M ON users;
  2. 创建用户后需通过 GRANT 赋予权限,如连接数据库权限:GRANT CONNECT TO ora_user;

注意事项

  • Oracle 用户创建后默认无任何权限,需显式授予(如 CONNECTRESOURCEDBA 等)。
  • 密码过期策略可通过 ALTER PROFILE 修改,如 ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME 180;

SQL Server 创建用户命令

SQL Server 中创建用户需先创建登录账户(服务器级)再映射到数据库用户,语法如下:

  1. 创建登录账户(服务器级):
    CREATE LOGIN login_name WITH PASSWORD = 'password'
    [DEFAULT_DATABASE = database_name]
    [CHECK_POLICY = ON/OFF];
  2. 创建数据库用户(将登录账户映射到当前数据库):
    CREATE USER user_name FOR LOGIN login_name
    [WITH DEFAULT_SCHEMA = schema_name];
  • 参数说明
    • login_name:登录账户名,服务器级唯一。
    • DEFAULT_DATABASE:指定默认数据库。
    • CHECK_POLICY:是否强制执行 Windows 密码策略(默认为 ON)。
    • DEFAULT_SCHEMA:指定用户默认架构(如 dbo)。

示例

  1. 创建登录账户 sql_login,密码为 Sql@789,默认数据库为 TestDB
    CREATE LOGIN sql_login WITH PASSWORD = 'Sql@789', DEFAULT_DATABASE = TestDB;
  2. TestDB 数据库中创建用户 sql_user,映射到 sql_login
    USE TestDB;
    CREATE USER sql_user FOR LOGIN sql_login WITH DEFAULT_SCHEMA = dbo;

注意事项

  • SQL Server 用户需通过 GRANT 授予数据库级权限,如 GRANT SELECT, INSERT ON dbo.Table1 TO sql_user;
  • 若使用 Windows 身份验证,可通过 CREATE LOGIN [DOMAIN\username] FROM WINDOWS; 创建登录账户。

数据库用户权限管理

创建用户后,需根据业务需求分配权限,避免过度授权,常见权限管理命令如下:

  • MySQLGRANT SELECT, INSERT ON database_name.* TO 'username'@'host';
  • PostgreSQLGRANT SELECT ON table_name TO username;
  • OracleGRANT SELECT, UPDATE ON schema.table_name TO username;
  • SQL ServerGRANT EXECUTE ON PROCEDURE_name TO user_name;

权限分配后需注意定期审计,通过数据库提供的系统视图(如 MySQL 的 mysql.user、Oracle 的 dba_tab_privs)检查用户权限状态。

相关问答FAQs

Q1:创建用户时忘记指定登录主机(MySQL)会有什么影响?
A:若未指定 host 参数,MySQL 默认为 ,即允许用户从任意主机登录,可能带来安全风险,建议根据实际需求限制主机地址,如仅允许内网 IP 或本地登录,可通过 UPDATE mysql.user SET Host='具体IP' WHERE User='username'; 修改后刷新权限。

Q2:PostgreSQL 中如何修改已创建用户的密码?
A:使用 ALTER USER 语句修改密码,语法为 ALTER USER username WITH PASSWORD 'new_password';,将用户 pg_user 的密码修改为 NewPass@2023,执行:ALTER USER pg_user WITH PASSWORD 'NewPass@2023';,修改后需用户重新登录生效。

分享:
扫描分享到社交APP
上一篇
下一篇