在命令行中建立数据库是数据库管理中的基础操作,不同数据库管理系统(如MySQL、PostgreSQL、SQLite等)的命令和步骤略有差异,但核心流程相似,以下以MySQL和PostgreSQL为例,详细介绍通过命令行建立数据库的完整步骤、注意事项及相关操作技巧。

准备工作
在开始操作前,需确保已安装对应的数据库管理系统,并配置好环境变量,以MySQL为例,需安装MySQL Server并启动服务,使用root用户或有足够权限的用户登录;PostgreSQL则需初始化数据库集群(通过initdb
命令)并启动postgresql
服务。
MySQL数据库建立
登录MySQL
打开终端,使用以下命令登录MySQL服务器(需提前安装MySQL客户端):
mysql -u root -p
输入密码后进入MySQL命令行界面。
创建数据库
使用CREATE DATABASE
语句创建数据库,需指定数据库名称,并可设置字符集和排序规则(推荐使用utf8mb4
以支持多语言和特殊字符):

CREATE DATABASE my_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
验证创建
执行SHOW DATABASES;
查看所有数据库,确认新数据库已存在:
SHOW DATABASES;
选择数据库
创建后需使用USE
语句选择当前操作的数据库:
USE my_database;
创建表(可选)
在数据库中创建表,
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE );
常见问题与解决
- 错误码1044(Access denied):用户权限不足,需通过
GRANT
语句授权,GRANT ALL PRIVILEGES ON my_database.* TO 'username'@'localhost'; FLUSH PRIVILEGES;
- 字符集错误:若创建时未指定字符集,可通过
ALTER DATABASE
修改:ALTER DATABASE my_database CHARACTER SET utf8mb4;
PostgreSQL数据库建立
登录PostgreSQL
使用psql
命令登录,默认需提供超级用户(如postgres
):

psql -U postgres
创建数据库
使用createdb
命令(需在系统终端执行)或CREATE DATABASE
SQL语句(在psql中执行):
CREATE DATABASE my_database WITH ENCODING 'UTF8' LC_COLLATE = 'zh_CN.UTF-8' LC_CTYPE = 'zh_CN.UTF-8';
验证创建
在psql中执行\l
查看所有数据库:
\l
连接数据库
使用\c
命令连接到新创建的数据库:
\c my_database
创建表(可选)
CREATE TABLE users ( id SERIAL PRIMARY KEY, name VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE );
常见问题与解决
- 错误角色“postgres”不存在:需检查PostgreSQL用户配置,或使用
sudo -u postgres psql
登录。 - 权限不足:非超级用户需通过
GRANT
授权,GRANT ALL PRIVILEGES ON DATABASE my_database TO username;
SQLite数据库建立
SQLite无需服务器,直接通过命令行工具创建数据库文件:
sqlite3 my_database.db
进入SQLite命令行后,可直接执行SQL语句创建表,
CREATE TABLE users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, email TEXT UNIQUE );
退出时使用.exit
命令,数据库文件将自动保存在当前目录。
通用注意事项
- 权限管理:避免使用root或超级用户直接操作生产数据库,应创建专用用户并分配最小必要权限。
- 备份与恢复:创建数据库前建议备份现有数据,MySQL可通过
mysqldump
备份,PostgreSQL使用pg_dump
。 - 命名规范:数据库名称应避免使用特殊字符和保留字,建议使用小写字母加下划线。
- 字符集统一:确保数据库、表、字段的字符集一致,避免乱码问题。
命令行操作技巧
- 批量执行SQL:通过重定向文件执行多个SQL语句,
mysql -u root -p < schema.sql
- 查看帮助:MySQL中使用
HELP;
,PostgreSQL中使用\?
,SQLite中使用.help
。 - 导出数据库结构:MySQL的
SHOW CREATE DATABASE my_database;
可查看创建语句。
相关问答FAQs
Q1:如何修改已创建数据库的字符集?
A1:在MySQL中,使用ALTER DATABASE
语句修改,
ALTER DATABASE my_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
在PostgreSQL中,需使用ALTER DATABASE
并重新设置编码,
ALTER DATABASE my_database SET LC_COLLATE = 'zh_CN.UTF-8';
Q2:命令行创建数据库时如何避免输入密码暴露?
A2:可通过配置文件或环境变量存储密码,以MySQL为例,在用户目录创建.my.cnf
文件(需设置权限为600):
[client] user = your_username password = your_password
之后直接执行mysql -u your_username
即可自动读取密码,避免在命令行中明文输入。