活动公告

系统通知
05-18 21:22
系统通知
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

一步步教你如何在openSUSE Tumbleweed系统上成功安装并配置各类数据库软件的实用教程

SunJu_FaceMall

3万

主题

2860

科技点

3万

积分

白金月票

碾压王

积分
32872

塔罗立华奏

<font color=白金月票" /> 发表于 2025-9-7 11:00:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
引言

openSUSE Tumbleweed是一个滚动发布的Linux发行版,它为用户提供了最新的软件包和稳定的环境。对于开发人员和系统管理员来说,在openSUSE Tumbleweed上安装和配置数据库软件是日常工作的重要部分。本教程将详细介绍如何在openSUSE Tumbleweed系统上安装并配置多种流行的数据库软件,包括关系型数据库和非关系型数据库。

系统准备

在开始安装数据库软件之前,我们需要确保系统已经准备好并更新到最新状态。

更新系统

首先,打开终端并以root用户身份登录或使用sudo命令执行以下命令来更新系统:
  1. sudo zypper refresh
  2. sudo zypper update
复制代码

这些命令将刷新软件包列表并安装所有可用的更新,确保系统是最新的。

安装必要的工具

安装一些基本工具,它们可能在后续的数据库安装和配置过程中用到:
  1. sudo zypper install -t pattern devel_basis
  2. sudo zypper install wget curl nano
复制代码

配置防火墙

openSUSE默认使用firewalld作为防火墙管理工具。我们需要确保防火墙允许数据库服务的端口通过:
  1. sudo firewall-cmd --permanent --add-service=postgresql
  2. sudo firewall-cmd --permanent --add-service=mysql
  3. sudo firewall-cmd --permanent --add-service=mongodb
  4. sudo firewall-cmd --reload
复制代码

安装和配置MariaDB/MySQL

MariaDB是MySQL的一个分支,完全兼容MySQL,并且在openSUSE中通常是默认的MySQL替代品。

安装MariaDB

使用以下命令安装MariaDB服务器和客户端:
  1. sudo zypper install mariadb mariadb-client
复制代码

启动并启用MariaDB服务

安装完成后,启动MariaDB服务并设置为开机自启:
  1. sudo systemctl start mariadb
  2. sudo systemctl enable mariadb
复制代码

安全配置

运行MariaDB的安全安装脚本,这将帮助你设置root密码,移除匿名用户,禁止远程root登录等:
  1. sudo mysql_secure_installation
复制代码

按照提示进行操作:

1. 输入当前的root密码(首次安装时为空,直接按Enter)
2. 设置root密码
3. 移除匿名用户?(Y)
4. 禁止远程root登录?(Y)
5. 移除测试数据库并访问它?(Y)
6. 重新加载权限表?(Y)

测试MariaDB安装

登录MariaDB以测试安装是否成功:
  1. mysql -u root -p
复制代码

输入你设置的root密码,如果成功登录,将看到MariaDB的欢迎信息。

创建数据库和用户

在MariaDB shell中,创建一个新的数据库和用户:
  1. CREATE DATABASE mydatabase;
  2. CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';
  3. GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost';
  4. FLUSH PRIVILEGES;
  5. EXIT;
复制代码

安装和配置PostgreSQL

PostgreSQL是一个功能强大的开源对象关系数据库系统。

安装PostgreSQL

使用以下命令安装PostgreSQL服务器和客户端:
  1. sudo zypper install postgresql postgresql-server postgresql-contrib
复制代码

初始化数据库集群

在首次使用PostgreSQL之前,需要初始化数据库集群:
  1. sudo systemctl initialize postgresql
复制代码

启动并启用PostgreSQL服务
  1. sudo systemctl start postgresql
  2. sudo systemctl enable postgresql
复制代码

配置PostgreSQL

PostgreSQL默认使用”peer”认证方式,这意味着系统用户可以直接映射到PostgreSQL用户。我们需要设置postgres用户的密码:
  1. sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'your_password';"
复制代码

创建数据库和用户

创建一个新的数据库和用户:
  1. sudo -u postgres createdb mydatabase
  2. sudo -u postgres createuser myuser
复制代码

然后,为新用户设置密码并授予权限:
  1. sudo -u postgres psql
复制代码

在PostgreSQL shell中:
  1. ALTER USER myuser WITH PASSWORD 'mypassword';
  2. GRANT ALL PRIVILEGES ON DATABASE mydatabase TO myuser;
  3. \q
复制代码

配置远程访问(可选)

如果需要远程访问PostgreSQL,编辑配置文件:
  1. sudo nano /var/lib/pgsql/data/postgresql.conf
复制代码

取消注释并修改listen_addresses行:
  1. listen_addresses = '*'
复制代码

然后编辑客户端认证配置文件:
  1. sudo nano /var/lib/pgsql/data/pg_hba.conf
复制代码

在文件末尾添加以下行以允许特定IP段的远程访问:
  1. host    all             all             0.0.0.0/0               md5
复制代码

重启PostgreSQL服务:
  1. sudo systemctl restart postgresql
复制代码

安装和配置SQLite

SQLite是一个轻量级的磁盘数据库,不需要单独的服务器进程。

安装SQLite
  1. sudo zypper install sqlite3
复制代码

创建和使用SQLite数据库

创建一个新的SQLite数据库:
  1. sqlite3 mydatabase.db
复制代码

在SQLite shell中,你可以创建表和插入数据:
  1. CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, email TEXT);
  2. INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com');
  3. INSERT INTO users (name, email) VALUES ('Jane Smith', 'jane@example.com');
  4. SELECT * FROM users;
  5. .quit
复制代码

SQLite数据库文件mydatabase.db将保存在当前目录中,可以直接复制或移动。

安装和配置MongoDB

MongoDB是一个流行的NoSQL文档数据库。

添加MongoDB仓库

首先,添加MongoDB仓库:
  1. sudo zypper addrepo --gpgcheck "https://repo.mongodb.org/zypper/suse/15/mongodb-org/6.0/x86_64/" mongodb
复制代码

导入MongoDB GPG密钥
  1. sudo rpm --import https://www.mongodb.org/static/pgp/server-6.0.asc
复制代码

安装MongoDB
  1. sudo zypper install mongodb-org
复制代码

创建MongoDB数据目录
  1. sudo mkdir -p /var/lib/mongo
  2. sudo mkdir -p /var/log/mongodb
  3. sudo chown -R mongod:mongod /var/lib/mongo
  4. sudo chown -R mongod:mongod /var/log/mongodb
复制代码

启动并启用MongoDB服务
  1. sudo systemctl start mongod
  2. sudo systemctl enable mongod
复制代码

验证MongoDB安装

连接到MongoDB shell:
  1. mongosh
复制代码

在MongoDB shell中,你可以运行以下命令来查看数据库信息:
  1. db.help()
  2. show dbs
  3. use test
  4. db.test.insert({name: "John Doe", email: "john@example.com"})
  5. db.test.find()
  6. exit
复制代码

配置MongoDB远程访问(可选)

编辑MongoDB配置文件:
  1. sudo nano /etc/mongod.conf
复制代码

找到net部分,修改bindIp:
  1. net:
  2.   port: 27017
  3.   bindIp: 0.0.0.0  # 允许所有IP访问
复制代码

重启MongoDB服务:
  1. sudo systemctl restart mongod
复制代码

安装和配置Redis

Redis是一个开源的内存数据结构存储,用作数据库、缓存和消息代理。

安装Redis
  1. sudo zypper install redis
复制代码

启动并启用Redis服务
  1. sudo systemctl start redis
  2. sudo systemctl enable redis
复制代码

测试Redis安装

使用Redis CLI测试安装:
  1. redis-cli
复制代码

在Redis shell中:
  1. PING
  2. SET mykey "Hello Redis"
  3. GET mykey
  4. EXIT
复制代码

配置Redis密码

编辑Redis配置文件:
  1. sudo nano /etc/redis/redis.conf
复制代码

取消注释并修改requirepass行:
  1. requirepass your_strong_password
复制代码

重启Redis服务:
  1. sudo systemctl restart redis
复制代码

配置Redis远程访问(可选)

编辑Redis配置文件:
  1. sudo nano /etc/redis/redis.conf
复制代码

找到bind行并修改:
  1. bind 0.0.0.0
复制代码

为了安全,建议同时设置密码保护:
  1. requirepass your_strong_password
复制代码

重启Redis服务:
  1. sudo systemctl restart redis
复制代码

安装和配置Elasticsearch

Elasticsearch是一个分布式、RESTful风格的搜索和分析引擎。

安装OpenJDK

Elasticsearch需要Java运行环境:
  1. sudo zypper install java-11-openjdk
复制代码

添加Elasticsearch仓库

导入Elasticsearch PGP密钥:
  1. sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
复制代码

添加Elasticsearch仓库:
  1. sudo zypper addrepo --gpgcheck "https://artifacts.elastic.co/packages/7.x/yum" elasticsearch
复制代码

安装Elasticsearch
  1. sudo zypper install elasticsearch
复制代码

配置Elasticsearch

编辑Elasticsearch配置文件:
  1. sudo nano /etc/elasticsearch/elasticsearch.yml
复制代码

设置集群名称和节点名称:
  1. cluster.name: my-cluster
  2. node.name: node-1
复制代码

设置网络主机以允许远程访问:
  1. network.host: 0.0.0.0
  2. discovery.seed_hosts: ["127.0.0.1"]
  3. cluster.initial_master_nodes: ["node-1"]
复制代码

启动并启用Elasticsearch服务
  1. sudo systemctl start elasticsearch
  2. sudo systemctl enable elasticsearch
复制代码

测试Elasticsearch安装

使用curl测试Elasticsearch是否正常运行:
  1. curl -X GET "localhost:9200/"
复制代码

你应该会看到一个JSON响应,包含有关Elasticsearch实例的信息。

数据库安全配置

通用安全最佳实践

1. 使用强密码:为所有数据库用户设置强密码,特别是管理员账户。
2. 限制网络访问:只允许必要的IP地址访问数据库服务器。
3. 定期更新:保持数据库软件和系统更新到最新版本。
4. 备份数据:定期备份数据库,并测试恢复过程。
5. 最小权限原则:为用户和应用程序分配最小必要的权限。

使用强密码:为所有数据库用户设置强密码,特别是管理员账户。

限制网络访问:只允许必要的IP地址访问数据库服务器。

定期更新:保持数据库软件和系统更新到最新版本。

备份数据:定期备份数据库,并测试恢复过程。

最小权限原则:为用户和应用程序分配最小必要的权限。

MariaDB/MySQL安全配置

除了运行mysql_secure_installation外,还可以考虑以下安全措施:

1. 创建特定用途的用户,而不是使用root账户进行应用程序连接:
  1. CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'strong_password';
  2. GRANT SELECT, INSERT, UPDATE, DELETE ON appdatabase.* TO 'appuser'@'localhost';
  3. FLUSH PRIVILEGES;
复制代码

1. 禁用或限制远程root访问:
  1. DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
  2. FLUSH PRIVILEGES;
复制代码

1. 启用SSL连接:

编辑MariaDB配置文件:
  1. sudo nano /etc/my.cnf.d/mariadb-server.cnf
复制代码

在[mariadb]部分添加:
  1. ssl-ca = /path/to/ca-cert.pem
  2. ssl-cert = /path/to/server-cert.pem
  3. ssl-key = /path/to/server-key.pem
  4. require_secure_transport = ON
复制代码

重启MariaDB服务:
  1. sudo systemctl restart mariadb
复制代码

PostgreSQL安全配置

1. 使用pg_hba.conf文件限制访问:
  1. sudo nano /var/lib/pgsql/data/pg_hba.conf
复制代码

配置示例:
  1. # TYPE  DATABASE        USER            ADDRESS                 METHOD
  2. local   all             all                                     peer
  3. host    all             all             127.0.0.1/32            md5
  4. host    all             all             ::1/128                 md5
  5. host    mydatabase      myuser          192.168.1.0/24          md5
复制代码

1. 启用SSL连接:

编辑postgresql.conf:
  1. sudo nano /var/lib/pgsql/data/postgresql.conf
复制代码

取消注释并修改:
  1. ssl = on
  2. ssl_cert_file = 'server.crt'
  3. ssl_key_file = 'server.key'
复制代码

重启PostgreSQL服务:
  1. sudo systemctl restart postgresql
复制代码

MongoDB安全配置

1. 启用访问控制:

编辑mongod.conf:
  1. sudo nano /etc/mongod.conf
复制代码

在security部分添加:
  1. security:
  2.   authorization: enabled
复制代码

1. 创建管理员用户:
  1. mongosh
复制代码

在MongoDB shell中:
  1. use admin
  2. db.createUser({
  3.   user: "admin",
  4.   pwd: "strong_password",
  5.   roles: [{ role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase"]
  6. })
  7. exit
复制代码

重启MongoDB服务:
  1. sudo systemctl restart mongod
复制代码

1. 使用管理员身份验证并创建应用用户:
  1. mongosh -u admin -p --authenticationDatabase admin
复制代码

在MongoDB shell中:
  1. use mydatabase
  2. db.createUser({
  3.   user: "appuser",
  4.   pwd: "app_password",
  5.   roles: [{ role: "readWrite", db: "mydatabase" }]
  6. })
  7. exit
复制代码

Redis安全配置

1. 除了设置密码外,还可以重命名危险命令:

编辑redis.conf:
  1. sudo nano /etc/redis/redis.conf
复制代码

添加或修改:
  1. rename-command FLUSHDB ""
  2. rename-command FLUSHALL ""
  3. rename-command DEBUG ""
复制代码

1. 使用绑定IP限制访问:
  1. bind 127.0.0.1 192.168.1.100
复制代码

重启Redis服务:
  1. sudo systemctl restart redis
复制代码

常见问题解决

MariaDB/MySQL常见问题

问题1:无法连接到MariaDB服务器

解决方案:

1. 检查服务状态:sudo systemctl status mariadb
2. 如果服务未运行,启动它:sudo systemctl start mariadb
3. 检查错误日志:sudo tail -f /var/log/mysql/mariadb.log
4. 检查防火墙设置:sudo firewall-cmd --list-all

问题2:忘记root密码

解决方案:

1. 停止MariaDB服务:sudo systemctl stop mariadb
2. 以安全模式启动:sudo mysqld_safe --skip-grant-tables &
3. 连接到MariaDB:mysql -u root
4. 重置密码:UPDATE mysql.user SET Password=PASSWORD('new_password') WHERE User='root';
5. 刷新权限:FLUSH PRIVILEGES;
6. 退出并重启服务:sudo systemctl restart mariadb

PostgreSQL常见问题

问题1:无法连接到PostgreSQL服务器

解决方案:

1. 检查服务状态:sudo systemctl status postgresql
2. 如果服务未运行,启动它:sudo systemctl start postgresql
3. 检查日志:sudo tail -f /var/log/postgresql/postgresql.log
4. 检查pg_hba.conf配置:sudo nano /var/lib/pgsql/data/pg_hba.conf

问题2:权限被拒绝错误

解决方案:

1. 确保使用正确的用户名和密码
2. 检查pg_hba.conf中的认证方法
3. 尝试以postgres用户身份连接:sudo -u postgres psql

MongoDB常见问题

问题1:MongoDB服务无法启动

解决方案:

1. 检查日志:sudo tail -f /var/log/mongodb/mongod.log
2. 检查数据目录权限:sudo chown -R mongod:mongod /var/lib/mongo
3. 检查配置文件语法:sudo mongod --config /etc/mongod.conf --validate

问题2:认证失败

解决方案:

1. 确保在mongod.conf中启用了authorization
2. 使用正确的认证数据库:mongosh -u username -p --authenticationDatabase admin
3. 重置用户密码:
  1. use admin
  2. db.changeUserPassword("username", "new_password")
复制代码

Redis常见问题

问题1:Redis服务无法启动

解决方案:

1. 检查日志:sudo tail -f /var/log/redis/redis-server.log
2. 检查配置文件:sudo redis-server /etc/redis/redis.conf
3. 检查端口占用:sudo netstat -tlnp | grep 6379

问题2:无法远程连接Redis

解决方案:

1. 检查bind配置:sudo nano /etc/redis/redis.conf
2. 检查防火墙设置:sudo firewall-cmd --list-all
3. 确保Redis服务正在运行:sudo systemctl status redis

数据库备份和恢复

MariaDB/MySQL备份和恢复

备份单个数据库:
  1. mysqldump -u root -p mydatabase > mydatabase_backup.sql
复制代码

备份所有数据库:
  1. mysqldump -u root -p --all-databases > all_databases_backup.sql
复制代码

恢复数据库:
  1. mysql -u root -p mydatabase < mydatabase_backup.sql
复制代码

PostgreSQL备份和恢复

备份单个数据库:
  1. pg_dump -U postgres mydatabase > mydatabase_backup.sql
复制代码

备份所有数据库:
  1. pg_dumpall -U postgres > all_databases_backup.sql
复制代码

恢复数据库:
  1. psql -U postgres mydatabase < mydatabase_backup.sql
复制代码

MongoDB备份和恢复

创建备份:
  1. mongodump --db mydatabase --out /path/to/backup
复制代码

恢复数据库:
  1. mongorestore --db mydatabase /path/to/backup/mydatabase
复制代码

Redis备份和恢复

创建备份:
  1. redis-cli BGSAVE
复制代码

备份文件通常位于/var/lib/redis/dump.rdb。

恢复备份:

1. 停止Redis服务:sudo systemctl stop redis
2. 替换dump.rdb文件:sudo cp /path/to/backup/dump.rdb /var/lib/redis/
3. 设置正确的权限:sudo chown redis:redis /var/lib/redis/dump.rdb
4. 启动Redis服务:sudo systemctl start redis

性能优化

MariaDB/MySQL性能优化

1. 编辑配置文件:
  1. sudo nano /etc/my.cnf.d/mariadb-server.cnf
复制代码

1. 调整内存设置:
  1. [mysqld]
  2. innodb_buffer_pool_size = 2G  # 设置为系统内存的50-70%
  3. innodb_log_file_size = 256M
  4. innodb_log_buffer_size = 64M
  5. query_cache_type = 1
  6. query_cache_size = 256M
复制代码

1. 重启MariaDB服务:
  1. sudo systemctl restart mariadb
复制代码

PostgreSQL性能优化

1. 编辑配置文件:
  1. sudo nano /var/lib/pgsql/data/postgresql.conf
复制代码

1. 调整内存设置:
  1. shared_buffers = 512MB  # 设置为系统内存的25%
  2. effective_cache_size = 2GB  # 设置为系统内存的50-75%
  3. work_mem = 16MB
  4. maintenance_work_mem = 128MB
复制代码

1. 重启PostgreSQL服务:
  1. sudo systemctl restart postgresql
复制代码

MongoDB性能优化

1. 编辑配置文件:
  1. sudo nano /etc/mongod.conf
复制代码

1. 调整内存设置:
  1. storage:
  2.   dbPath: /var/lib/mongo
  3.   journal:
  4.     enabled: true
  5.   wiredTiger:
  6.     engineConfig:
  7.       cacheSizeGB: 2  # 设置为系统内存的50-60%
复制代码

1. 重启MongoDB服务:
  1. sudo systemctl restart mongod
复制代码

Redis性能优化

1. 编辑配置文件:
  1. sudo nano /etc/redis/redis.conf
复制代码

1. 调整内存设置:
  1. maxmemory 2gb  # 设置为系统内存的50-70%
  2. maxmemory-policy allkeys-lru
复制代码

1. 重启Redis服务:
  1. sudo systemctl restart redis
复制代码

总结

本教程详细介绍了如何在openSUSE Tumbleweed系统上安装和配置多种流行的数据库软件,包括MariaDB/MySQL、PostgreSQL、SQLite、MongoDB、Redis和Elasticsearch。我们涵盖了从系统准备到安装、配置、安全设置、备份恢复和性能优化的全过程。

每个数据库都有其特定的用途和优势:

• MariaDB/MySQL适合传统的关系型数据存储
• PostgreSQL提供高级功能和对复杂查询的支持
• SQLite适合轻量级应用和移动开发
• MongoDB适合处理非结构化数据和快速开发
• Redis适合缓存和实时数据处理
• Elasticsearch适合全文搜索和分析

通过遵循本教程中的步骤,你应该能够在openSUSE Tumbleweed系统上成功安装和配置这些数据库软件,并根据你的具体需求进行优化和安全管理。记住,数据库管理是一个持续的过程,需要定期维护、监控和更新以确保最佳性能和安全性。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

0

主题

1304

科技点

654

积分

候风辨气

积分
654
候风辨气 发表于 2025-9-7 11:33:15 | 显示全部楼层
感謝分享
温馨提示:看帖回帖是一种美德,您的每一次发帖、回帖都是对论坛最大的支持,谢谢! [这是默认签名,点我更换签名]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则