You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用URI连接字符串直接连接MySQL/MariaDB命令行客户端?

用MySQL URI直接连接MariaDB命令行客户端的办法

问题说明

你手里有这种格式的数据库连接URI:mysql://<user>:<pass>@<host>:<port>/<database>,想不用拆成mysql -u <user> -h <host> -p ...这种长命令直接连,但你用的MariaDB客户端(mysql Ver 15.1 Distrib 10.11.2-MariaDB)没有官方文档里提到的--uri选项,下面给你几个可行的替代方案:

解决方案

1. 用环境变量MYSQL_URI

MariaDB客户端支持通过MYSQL_URI环境变量传递连接URI,直接这么用就行:

# 先设置环境变量再启动客户端
export MYSQL_URI="mysql://<user>:<pass>@<host>:<port>/<database>"
mysql

# 或者一次性执行,不用持久化环境变量
MYSQL_URI="mysql://<user>:<pass>@<host>:<port>/<database>" mysql

2. 借助临时配置文件+--defaults-extra-file

新建一个临时配置文件,比如命名为temp_conn.cnf,写入以下内容:

[client]
user=<user>
password=<pass>
host=<host>
port=<port>
database=<database>

先给配置文件设置安全权限(避免其他用户读取敏感信息),再用客户端加载:

chmod 600 temp_conn.cnf
mysql --defaults-extra-file=temp_conn.cnf

3. 脚本里自动解析URI拼接命令(适合批量操作)

如果需要在脚本中自动处理,可以用shell命令拆分URI参数,示例如下:

URI="mysql://<user>:<pass>@<host>:<port>/<database>"
USER=$(echo "$URI" | awk -F'[:@]' '{print $2}')
PASS=$(echo "$URI" | awk -F'[:@]' '{print $3}')
HOST=$(echo "$URI" | awk -F'[@:/]' '{print $4}')
PORT=$(echo "$URI" | awk -F'[:/]' '{print $5}')
DB=$(echo "$URI" | awk -F'/' '{print $4}')
mysql -u "$USER" -p"$PASS" -h "$HOST" -P "$PORT" "$DB"

⚠️ 注意:这种方式会在命令行暴露密码,生产环境优先选择前两种方法。

额外提示

MariaDB 10.13及以上版本的客户端已经支持--uri选项,要是你经常需要用URI连接,升级客户端版本会更方便。

内容的提问来源于stack exchange,提问作者Matt Sanders

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 12:00:08