命令行工具通过终端直接连接数据库,支持执行SQL查询、管理数据和进行批量操作,是数据库管理员和开发者进行高效交互与维护的基础方式。
在Linux系统中访问数据库是开发人员、系统管理员和数据分析师的常见任务,Linux因其稳定性、安全性和开源生态,成为运行数据库服务的首选平台,本文将详细介绍在Linux环境下访问数据库的多种方法,涵盖命令行工具、编程语言接口和图形化工具,并强调安全最佳实践。
命令行是最直接高效的访问方式,适合管理、调试和自动化任务。
MySQL/MariaDB
- 安装客户端:
sudo apt install mysql-client # Debian/Ubuntu sudo yum install mysql # CentOS/RHEL
- 连接数据库:
mysql -u 用户名 -p -h 主机地址 -P 端口
输入密码后进入交互式环境,执行SQL语句(如
SHOW DATABASES;)。
PostgreSQL
- 安装客户端:
sudo apt install postgresql-client # Debian/Ubuntu sudo yum install postgresql # CentOS/RHEL
- 连接数据库:
psql -U 用户名 -h 主机地址 -d 数据库名 -p 端口
支持元命令(如
\l查看数据库)。
SQLite
无需安装客户端,直接使用内置命令:
sqlite3 /路径/数据库文件.db
执行 .tables 查看表,.exit 退出。
Redis
redis-cli -h 主机地址 -p 端口
使用 KEYS * 查看键,GET key 获取值。
编程语言访问数据库
通过代码集成数据库操作,适合应用开发。
Python 示例
使用 mysql-connector-python 库:
import mysql.connector
conn = mysql.connector.connect(
host="localhost",
user="root",
password="密码",
database="testdb"
)
cursor = conn.cursor()
cursor.execute("SELECT * FROM users")
print(cursor.fetchall())
conn.close()
安装驱动:pip install mysql-connector-python
PHP 示例
通过 PDO 扩展连接 MySQL:
<?php
$dsn = 'mysql:host=localhost;dbname=testdb;charset=utf8';
$user = 'root';
$pass = '密码';
try {
$pdo = new PDO($dsn, $user, $pass);
$stmt = $pdo->query("SELECT * FROM users");
print_r($stmt->fetchAll());
} catch (PDOException $e) {
echo "错误: " . $e->getMessage();
}
?>
Node.js 示例
使用 mysql2 包:
const mysql = require('mysql2/promise');
async function queryDB() {
const conn = await mysql.createConnection({
host: 'localhost',
user: 'root',
password: '密码',
database: 'testdb'
});
const [rows] = await conn.execute('SELECT * FROM users');
console.log(rows);
conn.end();
}
queryDB();
安装:npm install mysql2
图形化工具(GUI)
适合可视化操作和数据分析。
-
DBeaver
- 支持 MySQL、PostgreSQL、Oracle 等20+数据库。
- 安装:
sudo snap install dbeaver-ce # Snap方式 # 或下载.deb/.rpm包安装
-
phpMyAdmin(Web版)
- 专为MySQL设计,通过浏览器访问。
- 安装:
sudo apt install phpmyadmin # Debian/Ubuntu
访问
http://服务器IP/phpmyadmin。
-
TablePlus
- 轻量级多数据库支持,界面简洁。
- 下载:官网提供Linux版.deb/.rpm包。
安全性与最佳实践
-
最小权限原则
- 为应用创建独立数据库用户,仅授予必要权限(避免使用
root)。
- 为应用创建独立数据库用户,仅授予必要权限(避免使用
-
加密连接
- 使用SSL/TLS加密数据传输(如MySQL的
--ssl-mode=REQUIRED)。
- 使用SSL/TLS加密数据传输(如MySQL的
-
避免明文密码
- 命令行:用
mysql_config_editor保存加密凭证。 - 代码:通过环境变量或密钥管理服务(如Vault)存储密码。
- 命令行:用
-
防火墙配置
- 限制数据库端口(如3306、5432)仅允许可信IP访问:
sudo ufw allow from 192.168.1.0/24 to any port 3306
- 限制数据库端口(如3306、5432)仅允许可信IP访问:
-
定期更新
保持数据库客户端和库的版本最新,修复已知漏洞。
在Linux中访问数据库的三种核心方式:
- 命令行:高效管理,适合运维。
- 编程语言:灵活集成,适合开发。
- GUI工具:直观操作,适合数据分析。
无论选择哪种方式,始终遵循安全规范,定期备份数据,并参考官方文档进行配置。
引用说明:
- MySQL官方文档:https://dev.mysql.com/doc/
- PostgreSQL官方文档:https://www.postgresql.org/docs/
- Python DB-API标准:https://peps.python.org/pep-0249/
- OWASP数据库安全指南:https://owasp.org/www-project-top-ten/
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/8525.html