Ubuntu24版本mysql,redis,docker,pgsql,java,maven,目录结构镜像源,静态ip,UFW安装配置教程

本文由 ZJHAO 编写 未经允许禁止转载

文章目录

初始化配置

1. 更换镜像源

1. 备份原始源列表
2. 确定系统版本代号
3. 选择适合的镜像源
4. 更新软件包缓存
5. 验证源状态
7. 配置完成后执行完整系统更新:

2. 创建新用户与权限管理
3. 系统更新与维护

静态IP快速配置

1. 查看网卡名称
2. 修改Netplan配置
3. 应用配置
4. 验证配置
5. 恢复DHCP(备用)

常用软件包

1. 基础工具
2. 系统监控与管理
3. 文本与文件操作
4. 开发工具
5. 网络与安全
6. 实用工具
一键安装所有工具
附加说明

用户目录结构优化

配置方案

1. 创建标准用户目录结构
2. 目录结构说明
3. 环境变量配置
4. 目录权限设置
5. 路径优化建议

使用建议
验证配置

UFW 使用指南

1. UFW 简介
2. 安装与基本命令

检查安装状态
如果未安装,安装UFW

3. 基本配置

启用UFW
禁用UFW
重置所有规则
查看当前规则

4. 允许和拒绝连接

允许特定端口
拒绝特定端口
允许特定IP
允许特定IP访问特定端口
拒绝特定IP

5. 应用配置

查看待应用的规则
重新加载规则

6. 高级配置

允许特定服务(使用服务名而非端口号)
限制连接速率(防暴力破解)
允许端口范围
删除规则

7. 配置示例

基本服务器配置示例
游戏服务器配置示例

8. 日志记录

启用日志
设置日志级别
查看日志

9. 常见问题解决

锁定自己
规则不生效

10. 最佳实践

配置 Java、Maven

配置 Java 和 Maven 环境变量
1. 解压安装包
2. 配置环境变量(全局)
3. 使配置生效
4. 验证安装
5. 目录结构更新
6. MAVEN配置
常见问题解决

PostgreSQL

第一部分:安装 PostgreSQL

1. 更新系统包列表
2. 安装 PostgreSQL
3. 验证安装

第二部分:基本配置

1. 连接到 PostgreSQL
2. 修改 postgres 用户密码
3. 创建新用户和数据库

第三部分:配置远程访问(可选)

1. 修改监听地址
2. 配置客户端认证
3. 重启 PostgreSQL
4. 开放防火墙端口(如果启用)

第四部分:常用管理命令
第五部分:基本使用

1. 连接到数据库
2. 常用 psql 命令
3. 创建表示例

第六部分:卸载 PostgreSQL(如果需要)
结论
授权用户所有权限

方法一:授予现有用户所有数据库的所有权限

方法二:更全面的超级用户权限(谨慎使用)
验证权限
注意事项

MySQL

在线安装MySQL

步骤1:更新软件包列表
步骤2:安装MySQL服务器
步骤3:启动MySQL服务
步骤4:检查MySQL状态
步骤5:修改密码

离线安装MySQL

步骤1:下载MySQL安装包
步骤2:传输安装包到目标机器
步骤3:安装MySQL
步骤4:配置MySQL
步骤5:检查MySQL状态
彻底卸载 MySQL
停止 MySQL 服务:
卸载 MySQL 软件包:
删除配置和数据文件:
删除 MySQL 用户和组(可选):
检查是否还有遗留文件:

远程访问权限

1. 允许远程连接前的准备工作
2. 修改MySQL配置允许远程连接
3. 创建远程访问用户并授权
4. 防火墙配置
5. 测试远程连接
安全注意事项

故障排除

Redis

安装Redis
配置Redis远程设置

Docker

准备工作

系统要求
卸载旧版本

使用 APT 安装

2.1 安装 Docker

启动 Docker
建立 docker 用户组
测试 Docker 是否安装正确
配置镜像加速
设置命令别名
个人自定义功能

快速设置常用服务
创建快速启动停止脚本

初始化配置

1. 更换镜像源

1. 备份原始源列表
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
2. 确定系统版本代号
lsb_release -cs  # 返回 "noble" (Ubuntu 24.04 代号)
3. 选择适合的镜像源

根据地理位置选择最优源:

推荐镜像源列表

提供商 地址 帮助文档 地区
阿里云 https://mirrors.aliyun.com/ubuntu/ 阿里云配置文档 中国大陆
清华大学 https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ 清华大学配置文档 中国大陆
科技大学 https://mirrors.ustc.edu.cn/ubuntu/ 科技大学配置文档 中国大陆
华为云 https://repo.huaweicloud.com/ubuntu/ 中国大陆
网易 https://mirrors.163.com/ubuntu/ 中国大陆
官方源 http://archive.ubuntu.com/ubuntu/ 全球
美国镜像 http://us.archive.ubuntu.com/ubuntu/ 北美
欧洲镜像 http://de.archive.ubuntu.com/ubuntu/ 欧洲
sudo vim /etc/apt/sources.list
4. 更新软件包缓存
sudo apt update
5. 验证源状态
apt policy  # 查看所有仓库状态
apt-cache policy | grep http  # 查看当前使用的源
7. 配置完成后执行完整系统更新:
sudo apt update && sudo apt full-upgrade -y

注意事项

不同地区选择最近的镜像源(欧洲可用de,美国用us镜像)
企业环境可能需要配置内部私有源
使用apt update而非apt upgrade先验证源是否有效

2. 创建新用户与权限管理

目的:避免使用root账户,增强系统安全性

# 创建新用户(示例用户:me)
sudo adduser me
# 交互式设置密码和用户信息(全名等可选)

# 授予sudo权限(两种方式)
sudo usermod -aG sudo me  # 方法1:加入sudo组
# 或编辑sudoers文件:sudo visudo 添加 "me ALL=(ALL:ALL) ALL"

# 验证sudo权限
su - me
sudo whoami  # 应返回"root"

# 配置用户默认shell(推荐bash)
sudo usermod --shell /bin/bash me

安全增强

# 锁定root密码(防止直接root登录)
sudo passwd -l root

# 查看用户权限
sudo grep '^sudo' /etc/group

3. 系统更新与维护

目的:确保系统安全和软件最新

# 完整系统更新
sudo apt update
sudo apt full-upgrade -y  # 比upgrade更彻底

# 自动清理(重要维护任务)
sudo apt autoremove --purge -y  # 移除无用包
sudo apt clean  # 清理下载缓存

# 安装内核头文件(为后续驱动编译准备)
sudo apt install linux-headers-$(uname -r)

更新策略

生产服务器建议测试后更新:sudo apt upgrade --dry-run
配置自动安全更新:sudo apt install unattended-upgrades
查看更新日志:/var/log/apt/history.log

静态IP快速配置

1. 查看网卡名称
ip a | grep "state UP"
2. 修改Netplan配置
sudo vim /etc/netplan/50-cloud-init.yaml
network:
  version: 2                      # 使用 netplan 版本 2 的配置语法
  renderer: networkd              # 使用 systemd-networkd 作为后端(默认值,可省略)
  ethernets:
    ens33:                        # 网卡名称(使用 `ip a` 或 `nmcli device` 查看)
      dhcp4: no                   # 禁用 IPv4 DHCP
      dhcp6: no                   # 禁用 IPv6 DHCP
      accept-ra: no               # 禁止接收 IPv6 路由通告(彻底关闭 IPv6)
      addresses: [192.168.150.101/24]  # 静态 IPv4 地址和子网掩码(CIDR 格式)
      routes:
        - to: default             # 默认路由(即网关)
          via: 192.168.150.2      # 网关 IP 地址
      nameservers:
        addresses: [192.168.150.2, 223.5.5.5]  # DNS 服务器列表(优先使用本地网关,备用阿里 DNS)
3. 应用配置
sudo netplan apply
4. 验证配置

检查 IP 和路由:

ip a show ens33    # 确认 IPv4 地址生效,无 IPv6 地址
ip route           # 查看默认路由是否指向正确网关

测试 DNS 解析:

ping baidu.com # 测试网络
nslookup baidu.com  # 测试DNS
5. 恢复DHCP(备用)
network:
  version: 2
  ethernets:
    你的网卡名:
      dhcp4: yes

注意:

gateway4在24.04仍可用(新版建议用routes
远程操作时建议保持现有连接
配置错误会导致断网,建议提前备份原文件

常用软件包

1. 基础工具

curl / wget
用于下载文件或访问网页内容:

sudo apt install curl wget

net-tools
包含传统网络工具(如 ifconfignetstat):

sudo apt install net-tools

iputils-ping
用于测试网络连通性:

sudo apt install iputils-ping

2. 系统监控与管理

htop
交互式系统资源监控工具(比 top 更直观):

sudo apt install htop

tmux / screen
终端复用工具,支持多任务分屏:

sudo apt install tmux screen

nload / iftop
网络流量监控工具:

sudo apt install nload iftop

3. 文本与文件操作

vim / nano
命令行文本编辑器:

sudo apt install vim nano

tree
以树形结构显示目录:

sudo apt install tree

rsync
高效文件同步工具:

sudo apt install rsync

4. 开发工具

git
版本控制工具:

sudo apt install git

build-essential
编译 C/C++ 程序的基础开发库:

sudo apt install build-essential

python3 / pip
Python 环境及包管理工具:

sudo apt install python3 python3-pip

5. 网络与安全

nmap
网络扫描和安全审计工具:

sudo apt install nmap

ufw
防火墙配置工具:

sudo apt install ufw

openssh-server
SSH 服务端(用于远程连接):

sudo apt install openssh-server

6. 实用工具

unzip / zip
压缩与解压工具:

sudo apt install unzip zip

ncdu
磁盘空间分析工具:

sudo apt install ncdu

jq
JSON 数据处理工具:

sudo apt install jq

一键安装所有工具

sudo apt update && sudo apt-get install -y 
  curl wget net-tools iputils-ping htop tmux screen 
  nload iftop vim nano tree rsync git build-essential 
  python3 python3-pip nmap ufw openssh-server unzip zip ncdu jq

附加说明

更新软件包列表
安装前建议先更新软件源:

sudo apt-get update

按需选择工具
根据实际需求安装,避免不必要的资源占用。

用户目录结构优化

目的:创建标准化工作目录,方便管理

配置方案

1. 创建标准用户目录结构

# 切换到 zjhao 用户
su - zjhao

# 创建基础目录结构
mkdir -p ~/{
            Data,Software,Projects,Documents,Downloads,Media,Temp}

# 详细目录说明
mkdir -p ~/Data/{
            Personal,Work}                  # 个人和工作数据
mkdir -p ~/Software/{
            Packages,Bin,Config}        # 软件相关
mkdir -p ~/Projects/{
            Git,Lab}                    # 项目文件
mkdir -p ~/Media/{
            Music,Pictures,Videos}         # 媒体文件
mkdir -p ~/Documents/{
            Notes,Books,Reports}       # 文档资料

2. 目录结构说明

/home/zjhao/
├── Data/                    # 各类数据文件
│   ├── Personal/            # 个人数据
│   └── Work/                # 工作相关数据
├── Software/                # 软件相关
│   ├── Packages/            # 软件安装包(.deb, .tar.gz等)
│   ├── Bin/                 # 自定义脚本和二进制文件
│   └── Config/              # 软件配置文件备份
├── Projects/                # 项目文件
│   ├── Git/                 # Git仓库项目
│   └── Lab/                 # 实验性项目
├── Documents/               # 文档资料
│   ├── Notes/               # 个人笔记
│   ├── Books/               # 电子书籍
│   └── Reports/             # 报告文档
├── Media/                   # 媒体文件
│   ├── Music/               # 音乐文件
│   ├── Pictures/            # 图片文件
│   └── Videos/              # 视频文件
├── Downloads/               # 浏览器下载文件(已存在)
└── Temp/                    # 临时文件

3. 环境变量配置

编辑 ~/.bashrc 文件添加以下内容,方便快速访问:

# 自定义目录快捷方式
export DATA_DIR="$HOME/Data"
export SOFT_DIR="$HOME/Software"
export PROJ_DIR="$HOME/Projects"
export MEDIA_DIR="$HOME/Media"
export DOCS_DIR="$HOME/Documents"

# 快捷命令别名
alias cdata="cd $DATA_DIR"
alias csoft="cd $SOFT_DIR"
alias cproj="cd $PROJ_DIR"
alias cmedia="cd $MEDIA_DIR"
alias cdocs="cd $DOCS_DIR"

使配置生效:

source ~/.bashrc

4. 目录权限设置

# 设置用户目录权限(700)
chmod 700 ~/{
            Data,Software,Projects,Documents,Media,Temp}

# 如果需要共享某些目录(示例)
chmod 755 ~/Software/Packages

5. 路径优化建议

软件安装包管理

# 将本地软件包目录加入系统路径
echo 'export PATH=$PATH:~/Software/Bin' >> ~/.bashrc

临时文件清理
可以添加定期清理 Temp 目录的 cron 任务:

(crontab -l 2>/dev/null; echo "0 3 * * * rm -rf ~/Temp/*") | crontab -

使用建议

软件安装包

下载的 .deb 文件存放在 ~/Software/Packages
源码压缩包解压到 ~/Software 相应目录
编译安装的软件可以指定 --prefix=$HOME/Software/Bin

项目开发

# 克隆项目示例
git clone https://github.com/username/project.git ~/Projects/Git/project

数据备份
重要数据建议定期备份 DataDocuments 目录

验证配置

# 检查目录结构
tree -L 2 ~/

# 测试快捷命令
cdata
pwd

此配置将帮助您保持文件组织有序,提高工作效率。可以根据实际需求调整目录结构。

UFW 使用指南

1. UFW 简介

UFW (Uncomplicated Firewall) 是 Ubuntu 默认的防火墙配置工具,它是 iptables 的前端,简化了防火墙配置过程。

2. 安装与基本命令

检查安装状态

sudo ufw status

如果未安装,安装UFW

sudo apt update
sudo apt install ufw

3. 基本配置

启用UFW

sudo ufw enable

禁用UFW

sudo ufw disable

重置所有规则

sudo ufw reset

查看当前规则

sudo ufw status verbose

4. 允许和拒绝连接

允许特定端口

sudo ufw allow 22  # 允许SSH
sudo ufw allow 80/tcp  # 允许HTTP
sudo ufw allow 443/tcp  # 允许HTTPS

拒绝特定端口

sudo ufw deny 23  # 拒绝Telnet

允许特定IP

sudo ufw allow from 192.168.1.100

允许特定IP访问特定端口

sudo ufw allow from 192.168.1.100 to any port 22

拒绝特定IP

sudo ufw deny from 10.0.0.0/24

5. 应用配置

查看待应用的规则

sudo ufw show added

重新加载规则

sudo ufw reload

6. 高级配置

允许特定服务(使用服务名而非端口号)

sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https

限制连接速率(防暴力破解)

sudo ufw limit ssh

允许端口范围

sudo ufw allow 6000:6007/tcp

删除规则

sudo ufw status numbered  # 查看带编号的规则
sudo ufw delete 2  # 删除编号为2的规则

7. 配置示例

基本服务器配置示例

sudo ufw default deny incoming  # 默认拒绝所有入站连接
sudo ufw default allow outgoing  # 默认允许所有出站连接
sudo ufw allow ssh  # 允许SSH
sudo ufw allow http  # 允许HTTP
sudo ufw allow https  # 允许HTTPS
sudo ufw enable

游戏服务器配置示例

sudo ufw allow 25565/tcp  # Minecraft
sudo ufw allow 27015/tcp  # Steam
sudo ufw allow 27015/udp

8. 日志记录

启用日志

sudo ufw logging on

设置日志级别

sudo ufw logging low|medium|high

查看日志

sudo tail -f /var/log/ufw.log

9. 常见问题解决

锁定自己

如果错误配置导致无法SSH连接:

通过控制台/VNC直接访问服务器
禁用UFW:

sudo ufw disable

规则不生效

检查规则是否正确:

sudo ufw status verbose

检查是否启用:

sudo ufw status

重启UFW:

sudo systemctl restart ufw

10. 最佳实践

先允许SSH再启用防火墙:避免锁定自己
使用服务名而非端口号:提高可读性
默认拒绝所有入站连接:只开放必要端口
定期审查规则:删除不再需要的规则
使用limit而非allow限制SSH:防止暴力破解
考虑使用fail2ban:增强安全性

通过本教程,您应该能够熟练使用UFW来管理Ubuntu系统的防火墙设置。

配置 Java、Maven

配置 Java 和 Maven 环境变量

根据你的目录结构 /home/zjhao/,假设:

Java 安装在 /home/zjhao/Software/Packages/jdk-xx.x.x
Maven 安装在 /home/zjhao/Software/Packages/apache-maven-x.x.x


1. 解压安装包

# 进入软件包目录
cd /home/zjhao/Software/Packages/

# 解压JDK(示例:jdk-21)
tar -xzf jdk-21_linux-x64_bin.tar.gz -C ../Bin/

# 解压Maven(示例:apache-maven-3.9.9)
tar -xzf apache-maven-3.9.9-bin.tar.gz -C ../Bin/

2. 配置环境变量(全局)

编辑用户环境变量文件 ~/.bashrc

sudo vim /etc/profile.d/my_env.sh

在文件末尾添加以下内容:

# Java Environment
export JAVA_HOME=/home/zjhao/Software/Bin/jdk-17.0.8
export PATH=$JAVA_HOME/bin:$PATH

# Maven Environment
export MAVEN_HOME=/home/zjhao/Software/Bin/apache-maven-3.9.6
export PATH=$MAVEN_HOME/bin:$PATH

3. 使配置生效

sudo chmod +x /etc/profile.d/my_env.sh
source /etc/profile

4. 验证安装

# 检查Java版本
java -version
# 应输出:java version "21.0.6"...

# 检查Maven版本
mvn -v
# 应输出:Apache Maven 3.9.9...

5. 目录结构更新

/home/zjhao/Software/
├── Bin/
│   ├── jdk-17.0.8/       # JDK安装目录
│   └── apache-maven-3.9.6/ # Maven安装目录
└── Packages/
    ├── jdk-17.0.8_linux-x64_bin.tar.gz  # 安装包备份
    └── apache-maven-3.9.6-bin.tar.gz    # 安装包备份

6. MAVEN配置

前往目录并编辑 setting.xml

vim /home/zjhao/Software/Bin/apache-maven-3.9.9/conf/settings.xml

在其中增加如下配置,配置本地仓库地址:

  <!-- 修改仓库为自定义的地址 -->
  <localRepository>/home/zjhao/Software/Bin/apache-maven-3.9.9/mvn_repo</localRepository>

并在settings.xml中的<mirrors>标签中,配置阿里云的私服(选做):

  <mirrors>
      
    <!-- 阿里云仓库 -->
    <mirror>
      <id>aliyunmaven</id>
      <mirrorOf>central,jcenter</mirrorOf>
      <name>阿里云公共仓库</name>
      <url>https://maven.aliyun.com/repository/public</url>
    </mirror>

  </mirrors>

常见问题解决

命令未找到

检查路径是否正确:echo $JAVA_HOME
确认解压后的文件夹名称是否匹配

版本冲突

使用 update-alternatives 管理多版本:

sudo update-alternatives --config java

代理设置(如需)
~/.m2/settings.xml 中配置:

<proxies>
  <proxy>
    <id>myproxy</id>
    <active>true</active>
    <protocol>http</protocol>
    <host>proxy.example.com</host>
    <port>8080</port>
  </proxy>
</proxies>

PostgreSQL

PostgreSQL 是一款功能强大的开源关系型数据库系统。本教程将指导您在 Ubuntu 24.04 系统上安装和配置 PostgreSQL。

第一部分:安装 PostgreSQL

1. 更新系统包列表

首先,确保您的系统包列表是最新的:

sudo apt update
sudo apt upgrade -y

2. 安装 PostgreSQL

Ubuntu 24.04 官方仓库中包含了 PostgreSQL 的最新稳定版本。执行以下命令安装:

sudo apt install postgresql postgresql-contrib -y

postgresql-contrib 包包含了一些额外的功能和扩展。

3. 验证安装

安装完成后,PostgreSQL 服务会自动启动。检查服务状态:

sudo systemctl status postgresql

您应该看到类似以下的活跃状态信息:

● postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; preset: enabled)
     Active: active (exited) since ...

第二部分:基本配置

1. 连接到 PostgreSQL

PostgreSQL 安装后会创建一个名为 postgres 的系统用户。切换到该用户:

sudo -i -u postgres

然后连接到 PostgreSQL:

psql

2. 修改 postgres 用户密码

在 psql 提示符下,为 postgres 用户设置密码:

ALTER USER postgres WITH PASSWORD 'your_password';

请将 'your_password' 替换为您选择的强密码。

3. 创建新用户和数据库

创建一个新用户和数据库(可选):

CREATE USER zjhao WITH PASSWORD '123456';
CREATE DATABASE mydb OWNER myuser;

授予权限:

GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;

退出 psql:

q

然后退出 postgres 用户:

exit

第三部分:配置远程访问(可选)

1. 修改监听地址

编辑 PostgreSQL 配置文件:

sudo nano /etc/postgresql/*/main/postgresql.conf

找到 listen_addresses 行并修改为:

listen_addresses = '*'   # 监听所有IP地址

2. 配置客户端认证

编辑 pg_hba.conf 文件:

sudo nano /etc/postgresql/*/main/pg_hba.conf

在文件末尾添加类似以下行以允许远程连接:

# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             0.0.0.0/0               md5

3. 重启 PostgreSQL

应用更改:

sudo systemctl restart postgresql

4. 开放防火墙端口(如果启用)

如果使用 UFW 防火墙:

sudo ufw allow 5432/tcp

第四部分:常用管理命令

启动 PostgreSQL 服务:

sudo systemctl start postgresql

停止 PostgreSQL 服务:

sudo systemctl stop postgresql

重启 PostgreSQL 服务:

sudo systemctl restart postgresql

查看 PostgreSQL 服务状态:

sudo systemctl status postgresql

设置 PostgreSQL 开机启动:

sudo systemctl enable postgresql

第五部分:基本使用

1. 连接到数据库

使用 psql 客户端连接:

psql -U username -d dbname -h 127.0.0.1 -W

2. 常用 psql 命令

l – 列出所有数据库
c dbname – 连接到指定数据库
dt – 列出当前数据库的所有表
du – 列出所有用户及其权限
q – 退出 psql

3. 创建表示例

CREATE TABLE employees (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    position VARCHAR(100),
    salary DECIMAL(10, 2)
);

第六部分:卸载 PostgreSQL(如果需要)

如果您需要卸载 PostgreSQL:

sudo apt purge postgresql postgresql-contrib
sudo apt autoremove

删除数据目录(谨慎操作,会删除所有数据):

sudo rm -rf /var/lib/postgresql/

结论

您现在已经在 Ubuntu 24.04 上成功安装并配置了 PostgreSQL。根据您的需求,您可以进一步探索 PostgreSQL 的高级功能,如复制、分区、扩展等。

如需更多帮助,可以参考 PostgreSQL 官方文档:https://www.postgresql.org/docs/

授权用户所有权限

方法一:授予现有用户所有数据库的所有权限

首先以 postgres 用户或其他超级用户身份登录 PostgreSQL:

sudo -u postgres psql

执行以下 SQL 命令授予权限:

-- 授予现有数据库的所有权限
GRANT ALL PRIVILEGES ON ALL DATABASES IN SCHEMA public TO zjhao;

-- 授予将来创建的数据库的所有权限
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON TABLES TO zjhao;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON SEQUENCES TO zjhao;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON FUNCTIONS TO zjhao;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON TYPES TO zjhao;

如果需要,您还可以授予用户创建数据库的权限:

ALTER USER zjhao CREATEDB;

方法二:更全面的超级用户权限(谨慎使用)

如果您希望用户 zjhao 拥有类似 postgres 用户的超级用户权限:

ALTER USER zjhao WITH SUPERUSER;

注意:这将给予用户完全的管理权限,包括创建/删除数据库、修改用户权限等,请谨慎使用。

验证权限

退出当前会话:

q

使用 zjhao 用户登录测试:

psql -U zjhao -d postgres

检查权限:

-- 查看数据库列表和访问权限
l

-- 尝试创建表等操作测试权限
CREATE TABLE test_permissions (id serial, name varchar(100));

注意事项

授予过多权限可能会带来安全风险,请根据实际需要分配权限
在生产环境中,建议遵循最小权限原则
如果只需要特定数据库的权限,可以只针对该数据库授权:

GRANT ALL PRIVILEGES ON DATABASE specific_db TO zjhao;

要撤销权限,可以使用 REVOKE 命令:

REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM zjhao;

MySQL

在线安装MySQL

步骤1:更新软件包列表

在进行任何软件安装之前,请确保你的系统的软件包列表是最新的。打开终端并运行以下命令:

sudo apt update

步骤2:安装MySQL服务器

在更新软件包列表后,这里我们可以查看一下可使用的MySQL安装包:

# 查看可使用的安装包
sudo apt search mysql-server

接下来可以使用以下命令安装MySQL服务器:

# 安装最新版本
sudo apt install mysql-server
# 安装指定版本
sudo apt install mysql-server-8.0

如果不加-y 会在安装过程中,系统将提示你设置MySQL的root密码。确保密码足够强,且记住它,因为你将在以后需要用到它。

如果没提示,见下文修改密码

步骤3:启动MySQL服务

安装完成后,MySQL服务会自动启动,未启动则使用以下命令启动MySQL服务:

sudo systemctl start mysql

并将MySQL设置为开机自启动:

sudo systemctl enable mysql

步骤4:检查MySQL状态

你可以使用以下命令来检查MySQL是否正在运行:

sudo systemctl status mysql

至此,你已经成功在线安装了MySQL服务器。

步骤5:修改密码

默认安装是没有设置密码的,需要我们自己设置密码。

# 登录mysql,在默认安装时如果没有让我们设置密码,则直接回车就能登录成功。
mysql -uroot -p
# 设置密码 mysql8.0
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
# 设置密码 mysql5.7
set password=password('新密码');
# 配置IP 5.7
grant all privileges on *.* to root@"%" identified by "密码";
# 刷新缓存
flush privileges;

离线安装MySQL

如果你需要在没有互联网连接的环境中安装MySQL,可以在另一台联网的计算机上下载MySQL的安装包,然后将其传输到目标Ubuntu机器上进行安装。

步骤1:下载MySQL安装包

在联网的计算机上,访问 MySQL官方网站 或者MySQL的软件仓库,然后下载适合你系统版本的MySQL安装包(通常是.deb文件)。将下载的文件保存到一个可移动的存储设备上。

步骤2:传输安装包到目标机器

将下载的MySQL安装包从联网计算机传输到目标Ubuntu机器。你可以使用USB驱动器、外部硬盘、网络传输等方法来完成这个步骤。

步骤3:安装MySQL

在目标Ubuntu机器上,使用以下命令来安装MySQL:

.deb文件安装方法

sudo dpkg -i mysql-package-name.deb

请将 mysql-package-name.deb 替换为你下载的MySQL安装包的文件名。

.tar.gz 文件安装方法

# 解压文件
tar -zxvf mysql-package.tar.gz 
# 安装
cd /tmp/mysql-package/bin/
./mysql_install_db

请将 mysql-package.tar.gz 替换为你实际下载的MySQL安装包的文件名。

步骤4:配置MySQL

安装完成后,你可以使用以下命令启动MySQL服务:

sudo systemctl start mysql

然后将MySQL设置为开机自启动:

sudo systemctl enable mysql

步骤5:检查MySQL状态

使用以下命令来检查MySQL是否正在运行:

sudo systemctl status mysql

至此,你已经成功在离线环境中安装了MySQL服务器。

彻底卸载 MySQL

要在 Ubuntu 系统上彻底卸载 MySQL,您可以按照以下步骤操作。请注意,这将完全移除 MySQL,包括所有数据和配置文件。在进行这些操作之前,请确保已经备份了所有重要数据。

停止 MySQL 服务:

首先,停止 MySQL 服务以确保所有 MySQL 进程都已终止。

sudo systemctl stop mysql

卸载 MySQL 软件包:

使用 apt-get 命令卸载 MySQL 服务器及其相关软件包。

sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean

这将卸载 MySQL 服务器、客户端以及所有相关的依赖包,并清除安装包缓存。

删除配置和数据文件:

删除 MySQL 的配置文件和数据目录。这一步是必要的,因为 apt-get remove –purge 可能不会删除所有文件。

sudo rm -rf /etc/mysql /var/lib/mysql
sudo rm -rf /var/log/mysql

删除 MySQL 用户和组(可选):

如果您希望删除 MySQL 用户和组,可以执行以下命令:

sudo deluser mysql
sudo delgroup mysql

检查是否还有遗留文件:

您还可以使用 find 命令来查找系统中可能遗留的与 MySQL 相关的其他文件,并手动删除它们。

sudo find / -iname 'mysql*' -exec rm -rf {
            } ;

远程访问权限

1. 允许远程连接前的准备工作

确保MySQL服务已安装并运行

sudo systemctl status mysql

检查MySQL当前监听地址

SHOW VARIABLES LIKE 'bind_address';

如果显示127.0.0.1,则只监听本地连接

2. 修改MySQL配置允许远程连接

编辑MySQL配置文件(位置可能因系统而异):

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

找到bind-address行并修改为:

bind-address = 0.0.0.0

或者注释掉该行

保存并退出编辑器

重启MySQL服务:

sudo systemctl restart mysql

3. 创建远程访问用户并授权

登录MySQL:

mysql -u root -p

创建专门用于远程连接的用户(推荐):

CREATE USER 'zjhao'@'%' IDENTIFIED BY '123456';

%表示允许从任何主机连接,也可以指定特定IP

授予权限(根据需要调整):

-- 授予所有数据库的所有权限(生产环境不推荐)
GRANT ALL PRIVILEGES ON *.* TO 'zjhao'@'%' WITH GRANT OPTION;

-- 更安全的做法是限制特定数据库
GRANT ALL PRIVILEGES ON your_database.* TO 'zjhao'@'%';

-- 或者更细粒度的权限
GRANT SELECT, INSERT, UPDATE ON your_database.* TO 'zjhao'@'%';

刷新权限:

FLUSH PRIVILEGES;

4. 防火墙配置

如果服务器有防火墙,需要开放MySQL端口(默认3306):

sudo ufw allow 3306/tcp

5. 测试远程连接

从远程机器测试连接:

mysql -h your_mysql_server_ip -u remote_user -p

安全注意事项

使用强密码:远程用户密码应足够复杂

限制访问IP:尽量使用特定IP而非%

最小权限原则:只授予必要的权限

考虑使用SSH隧道:更安全的替代方案

定期审计用户权限

SELECT user, host FROM mysql.user;
SHOW GRANTS FOR 'remote_user'@'%';

故障排除

连接被拒绝

检查防火墙设置
确认MySQL监听正确端口
检查用户权限和主机限制

检查错误日志

sudo tail -f /var/log/mysql/error.log

验证网络连通性

telnet your_mysql_server_ip 3306

检查MySQL是否监听外部连接

sudo netstat -tulnp | grep mysql

Redis

安装Redis

在Ubuntu中,可以直接使用apt安装Redis。
先更新系统:

sudo apt update

sudo apt upgrade

然后使用apt安装Redis:

# 查看可使用的安装包
sudo apt search redis-server

sudo apt install redis-server

安装完成后,测试Redis是否正常工作:

redis-cli --version

配置Redis远程设置

如果需要远程访问Redis,则需要修改Redis的配置文件(默认配置文件为/etc/redis/redis.conf )以适应远程访问。
打开/etc/redis/redis.conf 文件:

sudo vim /etc/redis/redis.conf 

在该文件中修改配置信息:

# 允许访问的地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问,生产环境不要设置为0.0.0.0
bind 0.0.0.0 ::
# 守护进程,修改为yes后即可后台运行
daemonize yes 
# 取消注释requirepass 启动密码认证,并设置访问密码
requirepass your-pass-word

Redis的其它常见配置:

# 监听的端口
port 6379
# 工作目录,默认是当前目录,也就是运行redis-server时的命令,日志、持久化等文件会保存在这个目录
dir .
# 数据库数量,设置为1,代表只使用1个库,默认有16个库,编号0~15
databases 1
# 设置redis能够使用的最大内存
maxmemory 512mb
# 日志文件,默认为空,不记录日志,可以指定日志文件名
logfile "redis.log"

配置完成后,保存并关闭文件。然后重启Redis

sudo systemctl restart redis-server

设置自启动

sudo systemctl enable redis-server

Docker

本安装教程参考文档:

官方文档

Ubuntu · Docker – 从入门到实践 (docker-practice.github.io)

警告:切勿在没有配置 Docker APT 源的情况下直接使用 apt 命令安装 Docker.

准备工作

系统要求

Docker 支持以下版本的 Ubuntu 操作系统:

Ubuntu Hirsute 21.04
Ubuntu Groovy 20.10
Ubuntu Focal 20.04 (LTS)
Ubuntu Bionic 18.04 (LTS)

Docker 可以安装在 64 位的 x86 平台或 ARM 平台上。Ubuntu 发行版中,LTS(Long-Term-Support)长期支持版本,会获得 5 年的升级维护支持,这样的版本会更稳定,因此在生产环境中推荐使用 LTS 版本。

卸载旧版本

旧版本的 Docker 称为 docker 或者 docker-engine,使用以下命令卸载旧版本:

sudo apt-get remove docker 
               docker-engine 
               docker.io

使用 APT 安装

由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书。

sudo apt-get update

sudo apt-get install 
    apt-transport-https 
    ca-certificates 
    curl 
    gnupg 
    lsb-release

鉴于国内网络问题,强烈建议使用国内源,官方源请在注释中查看。

为了确认所下载软件包的合法性,需要添加软件源的 GPG 密钥。

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg


# 官方源
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

然后,我们需要向 sources.list 中添加 Docker 软件源

echo 
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu 
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null


# 官方源
# $ echo 
#   "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu 
#   $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

以上命令会添加稳定版本的 Docker APT 镜像源,如果需要测试版本的 Docker 请将 stable 改为 test。

2.1 安装 Docker

更新 apt 软件包缓存,并安装 docker-ce

sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

启动 Docker

sudo systemctl enable docker
sudo systemctl start docker

建立 docker 用户组

默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。

建立 docker 组:

sudo groupadd docker

将当前用户加入 docker 组:

sudo usermod -aG docker $USER

退出当前终端并重新登录,进行如下测试。

测试 Docker 是否安装正确

docker run --rm hello-world

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
b8dfde127a29: Pull complete
Digest: sha256:308866a43596e83578c7dfa15e27a73011bdd402185a84c5cd7f32a88b501a24
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

若能正常输出以上信息,则说明安装成功。

配置镜像加速

前往阿里云官网,找到镜像工具下的镜像 加速器

具体命令如下:

# 创建目录
mkdir -p /etc/docker

# 复制内容,注意把其中的镜像加速地址改成你自己的
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}
EOF

# 重新加载配置
sudo systemctl daemon-reload

# 重启Docker
systemctl restart docker

设置命令别名

修改全局配置文件

bash

sudo vim /etc/bash.bashrc

zsh

vim ~/.zshrc

内容如下

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias dps='docker ps --format "table {
            {.ID}}	{
            {.Image}}	{
            {.Ports}}	{
            {.Status}}	{
            {.Names}}"'
alias dis='docker images'

个人自定义功能

快速设置常用服务

在路径/opt/software/docker-compose下载创建zjhao.yml

version: '3'

services:
  # mysql配置  
  mysql:
    environment:
      # 时区  
      TZ: "Asia/Shanghai"
      # root账号的密码
      MYSQL_ROOT_PASSWORD: "123456"
    # 镜像
    image: mysql
    # 容器名
    container_name: mysql
    # 重启策略(可选,根据需要启用)
    # restart: always
    # 卷映射挂载
    volumes:
      # 配置文件(确保目录中存在有效的配置文件)
      - "/opt/software/docker-compose/mysql/conf:/etc/mysql"
      # 数据目录,要确保先创建好
      - "/opt/software/docker-compose/mysql/data:/var/lib/mysql"
      # 初始化的脚本(确保目录中存在有效的SQL文件)
      - "/opt/software/docker-compose/mysql/init:/docker-entrypoint-initdb.d"
      # 日志目录,要确保先创建好
      - "/opt/software/docker-compose/mysql/logs:/var/log/mysql"
    # 端口映射
    ports:
      - "3306:3306"
    # 网络连接(将服务连接到自定义网络)
    networks:
      - net-zjhao

  # redis配置
  redis:
    # 镜像
    image: redis:latest
    # 容器名
    container_name: redis
    # 命令:启动AOF并设置密码
    command: redis-server --appendonly yes --requirepass "123456"
    # 端口映射
    ports:
      - "6379:6379"
    # 卷挂载
    volumes:
      - /opt/software/docker-compose/redis:/data
    # 网络连接(将服务连接到自定义网络)
    networks:
      - net-zjhao

# 网络定义
networks:
  net-zjhao:
    # 网络驱动
    driver: bridge

创建快速启动停止脚本

首先,使用创建一个新的脚本文件zjhao.sh

vim /opt/bin/zjhao.sh

编辑脚本

#!/bin/bash  

# 检查是否提供了参数  
if [ "$#" -ne 1 ]; then
    echo "用法: $0 {start|stop}"  
    exit 1
fi

# 根据传入的参数执行相应的命令  
case "$1" in
    start)
        echo "——————开始启动——————"  
        docker compose -f /opt/software/docker-compose/zjhao.yml up -d
        ;;
    stop)
        echo "——————正在关闭——————"  
        docker compose -f /opt/software/docker-compose/zjhao.yml down
        ;;
    *)
        echo "无效的参数: $1"  
        echo "有效参数: $0 {start|stop}"  
        exit 1
        ;;
esac

echo "——————执行成功——————"

保存并退出编辑器。

接下来,给脚本文件添加执行权限:

chmod +x zjhao.sh

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容