mysql 和 postgresql 常见命令对照

一、通用区别
postgresql 的客户端命令行 psql 命令在很大程度上接受很多和mysql类似的命令行参数,比如 -h 都是帮助。

这里列举一些明显的区别:

mysql -u 对应的是 psql -U,在psql里头用大写的U参数指定数据库用户。
mysql -P (指定端口号)对应的是 psql -p,在psql里头用小写的p参数指定端口号。
mysql -p 指定密码,在psql里不允许命令行上放密码,可以用.pgpass密码文件代替,详情请阅读这里 代替。
二、SQL 级别的
1、mysql 的 show table 在 postgresql 里头是啥?

在 psql 命令行工具里:

\d table_name

不加 table_name 的:

\d

显示全部表。

2、mysql 的 show create table 在 postgresql 里头对应的是啥?

最简单的做法:

pg_dump -h db_ip_address -U db_user -t table_name -s db_name

3、mysql 里头的 show database 在 postgresql 里头对应的是啥命令?

在 psql 命令行工具里:

\l

或者直接在shell命令行下:

psql -h db_ip_address -U db_superuser -l
mysql 里头的 use database 在 postgresql 对应的是啥?

在 psql 命令行工具里:

\c db_name

或者在shell命令行上给psql加上 -d 参数:

psql -h db_ip_address -U db_superuser -d db_name


4、mysql 里头的 auto_increment 在 postgresql 里头对应怎么弄?

postgresql 里头有个类型,叫 serial,等同于 mysql 里头的 int auto_increment 的定义,也就是说,在mysql里头下面的SQL代码:

create table
(
id int auto_increment
)

等效于 postgresql 里头的:

create table
(
id serial
)

postgresql 里头还有个 bigserial,是8字节的整数,如果需要特别大范围的序列号,可以用bigserial。

5、mysql 的 show full processlist 在 postgresql 里头对应是啥?

select * from pg_stat_activity;

爽的地方是,pg_stat_activity是一个系统视图(view),因此你可以对它加条件,甚至是排序什么的,比如:

select client_addr, count(1)
from pg_stat_activity
group by client_addr order by count(1) desc;

看看哪个客户端连接最多。

6、mysql 的 show global variables 对应的 postgresql 命令是什么?

在psql里头执行下面的SQL:

show all;

命令行级别的

7、mysql 的-e 参数,在psql 里头对应的是啥?

psql -h db_ip_address -U dbuser -d db_name -c $'select * from table'

如果需要输出tab分隔的数据,需要利用postgresql的copy命令:

psql -h db_ip_address -U dbuser -d db_name \
-c $'copy(select * from table) to stdout' > some_file

把你的查询放在一个 copy () to stdout 里头,就可以了。psql 支持100%的管道,所以你可以将结果重定向到任何文件,或者中间做任何处理。

本文来在老何的一千零一夜系列
<think>好的,我现在需要回答用户关于“数据库启动命令”的问题。首先,用户之前询问了关于SQLite性能警告的问题,现在转向了数据库启动命令,可能是在考虑迁移到其他数据库后的操作步骤。我需要确保回答覆盖常见数据库系统,如MySQLPostgreSQL、SQLite、MongoDBRedis,并且给出不同操作系统下的启动命令。 首先,我需要回忆各个数据库在不同平台上的启动方式。例如,在Linux上,MySQL通常使用systemctl,而Windows则是通过服务管理器。同样,PostgreSQL在Linux下也是用systemctl,但在macOS可能用brew services启动。SQLite不需要启动服务,但需要明确说明这一点,避免用户混淆。 接下来,用户可能需要具体的命令示例,包括安装后的首次启动、查看状态、停止重启的命令。需要分点列出,结构清晰。同时,要注意用户可能遇到的常见问题,比如权限问题、配置文件错误或端口冲突,需要给出排查建议。 另外,用户之前提到生产环境,可能需要强调在生产环境中如何配置自启动,比如使用systemctl enable命令。此外,对于容器化部署,比如Docker,提供docker run命令示例也是有帮助的。 需要确保使用正确的格式,比如代码块用反引号包裹,系统级指令中的数学公式用$...$,但在这个问题中可能用不上数学公式,所以主要关注代码命令的正确性。同时,按照用户要求,用中文回答,结构清晰,分步骤说明。 可能还需要注意不同数据库的默认端口号,比如MySQL是3306,PostgreSQL是5432,MongoDB是27017,Redis是6379,这些信息在用户配置防火墙或排查连接问题时非常有用。 最后,要总结建议,帮助用户根据使用场景选择合适的数据库,并强调生产环境的最佳实践,比如使用高可用架构定期备份。同时,提醒用户如果遇到具体错误,提供更多信息以便进一步帮助。 检查是否有遗漏的数据库,比如MariaDB,可能需要合并到MySQL部分,因为它们的启动命令类似。此外,是否需要包括SQL Server或者Oracle?考虑到用户可能更常用开源数据库,可能不需要,但如果有余力可以简要提及。 确认所有命令正确无误,例如systemctl start mysql是否正确,或者在某些Linux发行版中服务名可能是mysqld,需要根据不同的系统进行调整,比如CentOSUbuntu的区别,这时候可能需要注明。 总结来说,我需要组织一个结构清晰、涵盖主流数据库、包含各操作系统启动命令常见问题排查额外建议的详细回答,确保用户能够顺利启动他们的数据库服务。</think>--- ### **数据库启动命令详解** 不同数据库的启动命令因操作系统安装方式而异。以下是主流数据库的启动方式汇总: --- ### **1. SQLite** - **无需启动服务**:SQLite 是无服务型数据库,直接通过文件读写操作。 - **使用示例**: ```bash sqlite3 /path/to/database.db # 直接打开或创建数据库文件 ``` --- ### **2. MySQL/MariaDB** #### **Linux (Systemd)** ```bash # 启动服务 sudo systemctl start mysql # Ubuntu/Debian sudo systemctl start mariadb # CentOS/RHEL # 设置开机自启 sudo systemctl enable mysql # 查看状态 sudo systemctl status mysql ``` #### **Windows** - 通过 **服务管理器** 启动: `Win + R` → 输入 `services.msc` → 找到 `MySQL` 或 `MariaDB` 服务 → 右键启动。 #### **macOS (Homebrew)** ```bash brew services start mysql # MySQL brew services start mariadb # MariaDB ``` --- ### **3. PostgreSQL** #### **Linux (Systemd)** ```bash # 启动服务 sudo systemctl start postgresql # 允许远程访问(需修改配置文件) sudo nano /etc/postgresql/xx/main/postgresql.conf # 修改 listen_addresses = '*' sudo systemctl restart postgresql ``` #### **macOS (Homebrew)** ```bash brew services start postgresql ``` #### **Windows** - 通过安装包默认启动服务,或使用 `pg_ctl` 命令: ```bash pg_ctl start -D "C:\Program Files\PostgreSQL\xx\data" ``` --- ### **4. MongoDB** #### **Linux/Windows/macOS** ```bash # 启动服务(默认端口27017) sudo systemctl start mongod # Systemd brew services start mongodb-community # macOS mongod --dbpath=/data/db # 手动指定数据目录 ``` --- ### **5. Redis** #### **Linux (Systemd)** ```bash sudo systemctl start redis ``` #### **macOS (Homebrew)** ```bash brew services start redis ``` #### **直接运行** ```bash redis-server /path/to/redis.conf # 指定配置文件 ``` --- ### **6. Docker 容器化启动** 若使用 Docker,可通过镜像快速启动数据库: ```bash # MySQL docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:latest # PostgreSQL docker run --name postgres -e POSTGRES_PASSWORD=123456 -p 5432:5432 -d postgres:latest # MongoDB docker run --name mongo -p 27017:27017 -d mongo:latest ``` --- ### **常见问题排查** #### **(1) 权限不足** - **错误示例**:`Failed to start mysql.service: Access denied` - **解决方案**: ```bash sudo chown -R mysql:mysql /var/lib/mysql # 修复MySQL文件权限 ``` #### **(2) 端口冲突** - **错误示例**:`Address already in use` - **解决方案**: ```bash sudo netstat -tulnp | grep 3306 # 查看占用端口的进程 sudo kill <PID> # 终止冲突进程 ``` #### **(3) 配置文件错误** - **错误示例**:`Syntax error in config file` - **解决方案**: ```bash sudo journalctl -u postgresql # 查看日志定位错误行 sudo systemctl daemon-reload # 重载配置 ``` --- ### **总结建议** 1. **生产环境**:优先使用 `systemctl` 管理服务,确保开机自启。 2. **开发环境**:Docker 提供快速隔离的数据库实例。 3. **日志诊断**:通过 `journalctl -u <服务名>` 或 `/var/log/<数据库>/error.log` 排查问题。 --- ### **附录:默认端口对照表** | 数据库 | 默认端口 | |--------------|----------| | MySQL | 3306 | | PostgreSQL | 5432 | | MongoDB | 27017 | | Redis | 6379 | | SQLite | 无端口 | 如需进一步帮助,请提供: 1. 具体数据库类型 2. 操作系统及版本 3. 错误日志片段
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值