mysql -u 用户名 -p -h 主机地址
。连接前的准备工作
-
确认网络连通性
- 使用
ping
测试数据库服务器是否可达:ping 数据库IP地址
- 检查防火墙是否放行端口(如MySQL默认3306):
sudo ufw allow 3306/tcp # Ubuntu/Debian sudo firewall-cmd --add-port=3306/tcp --permanent # CentOS/RHEL
- 使用
-
安装数据库客户端工具
- MySQL/MariaDB:
sudo apt install mysql-client # Debian/Ubuntu sudo yum install mysql # CentOS/RHEL
- PostgreSQL:
sudo apt install postgresql-client # Debian/Ubuntu sudo yum install postgresql # CentOS/RHEL
- SQL Server:
安装ODBC驱动(官方指南)。
- MySQL/MariaDB:
-
获取数据库连接信息
- 主机IP地址、端口号
- 数据库名称
- 用户名和密码(确保该用户有远程访问权限)
连接不同数据库的详细步骤
连接MySQL/MariaDB
-
命令行连接:
mysql -h 数据库IP -P 端口 -u 用户名 -p
输入密码后进入交互界面。
示例:mysql -h 192.168.1.100 -P 3306 -u admin -p
-
执行SQL文件:
mysql -h 数据库IP -u 用户名 -p 数据库名 < 文件.sql
连接PostgreSQL
- 命令行连接:
psql -h 数据库IP -p 端口 -U 用户名 -d 数据库名
示例:
psql -h 10.0.0.5 -p 5432 -U postgres -d mydb
连接SQL Server
- 使用
sqlcmd
工具:sqlcmd -S 数据库IP,端口 -U 用户名 -P 密码 -d 数据库名
示例:
sqlcmd -S 192.168.1.200,1433 -U sa -P 'your_password' -d AdventureWorks
连接Oracle数据库
- 安装官方客户端
instantclient
,使用sqlplus
:sqlplus 用户名/密码@//数据库IP:端口/服务名
示例:
sqlplus system/oracle@//10.0.0.10:1521/ORCLCDB
测试连接是否成功
- 通用方法:
执行简单查询(如SELECT version();
或SHOW DATABASES;
),若返回结果则连接正常。 - 网络诊断:
使用telnet
或nc
测试端口:telnet 数据库IP 3306 # 测试MySQL端口 nc -zv 数据库IP 5432 # 测试PostgreSQL端口
常见问题及解决方案
问题类型 | 原因 | 解决方法 |
---|---|---|
连接超时 | 防火墙/网络策略阻断 | 检查防火墙规则,确认云安全组配置 |
权限拒绝 | 用户未授权远程访问 | 在数据库执行:GRANT ALL ON *.* TO 'user'@'客户端IP'; |
密码错误 | 密码错误或加密协议不匹配 | 重置密码,或更新认证插件(如MySQL的caching_sha2_password ) |
客户端不兼容 | 驱动版本过旧 | 升级客户端(如SQL Server需更新ODBC驱动) |
安全建议
-
避免明文密码
- 使用配置文件(如MySQL的
~/.my.cnf
):[client] host=数据库IP user=用户名 password=密码
设置权限:
chmod 600 ~/.my.cnf
。 - 通过环境变量传递密码:
export MYSQL_PWD='密码' && mysql -u 用户名 -h 数据库IP
- 使用配置文件(如MySQL的
-
启用加密传输
- MySQL:添加
--ssl-mode=REQUIRED
参数。 - PostgreSQL:连接字符串中添加
sslmode=require
。
- MySQL:添加
-
最小权限原则
为Linux应用分配仅需的数据库权限,避免使用root
账户。
通过应用代码连接(示例)
- Python(MySQL):
import mysql.connector db = mysql.connector.connect( host="数据库IP", user="用户名", password="密码", database="数据库名" ) cursor = db.cursor() cursor.execute("SELECT * FROM table")
- PHP(PostgreSQL):
<?php $conn = pg_connect("host=数据库IP dbname=数据库名 user=用户名 password=密码"); $result = pg_query($conn, "SELECT * FROM table"); ?>
掌握Linux连接外部数据库的方法,是高效管理数据和开发应用的基础技能,通过命令行工具快速验证连接,结合配置文件保障安全,再通过代码实现自动化操作,可应对从运维到开发的全场景需求,遇到问题时,优先排查网络、权限及客户端兼容性,多数问题可迎刃而解。
引用说明:
- MySQL官方文档:https://dev.mysql.com/doc/
- PostgreSQL客户端指南:https://www.postgresql.org/docs/current/app-psql.html
- Microsoft SQL Server Linux文档:https://learn.microsoft.com/en-us/sql/linux/
- Oracle Instant Client安装说明:https://www.oracle.com/database/technologies/instant-client.html
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/28385.html