Tailscale操作

启用出口节点,允许 LAN 访问

sudo tailscale up –advertise-exit-node

sudo tailscale up –exit-node=100.88.88.250 –accept-dns=false –exit-node-allow-lan-access

启用出口节点,禁止 LAN 访问

sudo tailscale up –exit-node=100.88.88.250 –accept-dns=false

关闭出口节点

sudo tailscale up –exit-node= –accept-dns=false

sudo tailscale up –exit-node=

sudo tailscale up –reset –exit-node=100.88.88.250

ssh设定

新安装的 Linux 系统无法 SSH 连接,通常是由于 SSH 服务未安装或未启动。请按以下步骤排查:

  1. 检查 SSH 服务状态
# 检查 SSH 服务是否安装
systemctl status ssh      # Ubuntu/Debian
systemctl status sshd     # CentOS/RHEL/Fedora

# 如果没有安装,先安装
sudo apt install openssh-server   # Debian/Ubuntu
sudo yum install openssh-server   # CentOS/RHEL
sudo dnf install openssh-server   # Fedora
  1. 启动并启用 SSH 服务
# 启动服务
sudo systemctl start ssh      # Ubuntu/Debian
sudo systemctl start sshd     # CentOS/RHEL/Fedora

# 设置开机自启
sudo systemctl enable ssh     # Ubuntu/Debian
sudo systemctl enable sshd    # CentOS/RHEL/Fedora
  1. 检查防火墙设置
# 查看防火墙状态
sudo ufw status              # Ubuntu (如果使用UFW)
sudo firewall-cmd --state    # CentOS/RHEL/Fedora (firewalld)
sudo iptables -L             # 检查iptables规则

# 开放22端口
sudo ufw allow 22            # Ubuntu
sudo firewall-cmd --add-port=22/tcp --permanent  # CentOS/RHEL
sudo firewall-cmd --reload
  1. 检查 SSH 配置
# 检查配置文件
sudo nano /etc/ssh/sshd_config

# 确保以下设置正确:
# PermitRootLogin yes(如果要以root登录)
# PasswordAuthentication yes(如果要用密码登录)
# Port 22(默认端口)

# 修改后重启服务
sudo systemctl restart ssh/sshd
  1. 验证 SSH 端口监听
# 检查SSH是否在监听22端口
sudo netstat -tlnp | grep :22
ss -tlnp | grep :22
  1. 云服务器特殊情况

如果你使用的是云服务器(AWS/Azure/阿里云/腾讯云等):

  1. 检查安全组规则 – 确保22端口对公网开放
  2. 检查云防火墙 – 控制台可能有额外的防火墙设置
  3. 本地网络测试
# 在同一网络内先用局域网IP测试
ifconfig 或 ip addr      # 查看本机IP

# 从另一台机器测试连接
ssh username@服务器IP
  1. 排错命令汇总
# 查看SSH服务日志
sudo journalctl -u ssh -f
sudo tail -f /var/log/auth.log     # Ubuntu
sudo tail -f /var/log/secure       # CentOS/RHEL
  1. 常见问题解决

· 权限问题:确保用户家目录权限正确(chmod 700 ~/.ssh)
· SELinux问题(CentOS/RHEL):

  sudo setsebool -P sshd_full_access on
  sudo restorecon -Rv /etc/ssh

· 密码认证被禁用:修改sshd_config中PasswordAuthentication yes

请告诉我:

  1. 你使用的是哪个 Linux 发行版?
  2. 是在物理机、虚拟机还是云服务器上?
  3. 执行上述命令时的具体输出?

这样我能提供更针对性的帮助。

ubuntu更新指定特定的源

这些错误表明系统无法解析到您配置的镜像域名(mirrors.tuna.tsinghua.edu.cn 和 mirrors.aliyun.com)。这通常是由于网络连接问题或DNS解析问题导致的。请按照以下步骤排查解决:

  1. 检查网络连接
ping -c 4 8.8.8.8

· 如果能ping通IP,说明网络连接正常,问题可能是DNS
· 如果无法ping通,检查网络配置或联系网络管理员

  1. 检查DNS解析
nslookup mirrors.tuna.tsinghua.edu.cn
nslookup mirrors.aliyun.com

如果无法解析,说明DNS有问题。

  1. 临时解决方案:使用系统默认源

先切换回Ubuntu官方源:

# 备份当前源列表
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

# 恢复为官方源(适用于Ubuntu 22.04 Jammy)
sudo tee /etc/apt/sources.list << 'EOF'
deb http://archive.ubuntu.com/ubuntu/ jammy main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
EOF
  1. 更新并清理
# 清理旧的包列表
sudo rm -rf /var/lib/apt/lists/*
sudo apt clean

# 更新源
sudo apt update
  1. 如果仍需国内镜像,更换其他可用镜像

如果清华镜像有问题,可以尝试其他镜像:

方法一:使用阿里云镜像

sudo sed -i 's/http:\/\/mirrors.tuna.tsinghua.edu.cn\/ubuntu/https:\/\/mirrors.aliyun.com\/ubuntu/g' /etc/apt/sources.list

方法二:使用华为云镜像

sudo sed -i 's/http:\/\/mirrors.tuna.tsinghua.edu.cn\/ubuntu/https:\/\/repo.huaweicloud.com\/ubuntu/g' /etc/apt/sources.list

方法三:手动编辑源文件

sudo nano /etc/apt/sources.list

将文件中所有的 mirrors.tuna.tsinghua.edu.cn 替换为:

· mirrors.aliyun.com (阿里云)
· mirrors.huaweicloud.com (华为云)
· mirrors.cloud.tencent.com (腾讯云)

  1. 检查Docker源配置

对于Docker源,也需要检查:

sudo nano /etc/apt/sources.list.d/docker.list

如果有问题,可以暂时注释掉或更换镜像。

  1. 完全重新配置(推荐)

最简单的方法是重新生成sources.list:

# 备份
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup.$(date +%Y%m%d)

# 生成阿里云镜像源(Ubuntu 22.04)
sudo tee /etc/apt/sources.list << 'EOF'
deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse

deb https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse

deb https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse

deb https://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse

deb https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
EOF

# 更新
sudo apt update
  1. 如果问题依旧,检查系统DNS配置
cat /etc/resolv.conf

确保有有效的DNS服务器,如:

nameserver 8.8.8.8
nameserver 8.8.4.4

或国内DNS:

nameserver 223.5.5.5  # 阿里DNS
nameserver 119.29.29.29  # 腾讯DNS

请按顺序尝试这些方法,通常问题会在第4步或第7步解决。

开放特定端口

在Ubuntu上开放端口10088,需要根据你使用的防火墙工具来操作。Ubuntu常见的防火墙工具有 ufw(推荐,简单易用)和 iptables(底层工具)。下面是详细的操作方法:

方法一:使用 ufw(推荐)

ufw 是Ubuntu默认的防火墙管理工具,操作简单。

  1. 检查ufw状态
sudo ufw status

· 如果显示 Status: inactive,说明防火墙未启用,端口默认都是开放的。
· 如果显示 Status: active,则需要添加规则。

  1. 启用ufw(如果未启用)
sudo ufw enable
  1. 开放10088端口

开放TCP协议的10088端口:

sudo ufw allow 10088/tcp

如果同时需要TCP和UDP:

sudo ufw allow 10088

更精确的控制:

# 仅允许来自特定IP访问10088端口
sudo ufw allow from 192.168.1.100 to any port 10088 proto tcp

# 允许特定IP段
sudo ufw allow from 192.168.1.0/24 to any port 10088
  1. 验证规则已添加
sudo ufw status numbered

输出示例:

Status: active

     To                         Action      From
     --                         ------      ----
[1] 10088/tcp                  ALLOW       Anywhere
[2] 10088/tcp (v6)             ALLOW       Anywhere (v6)
  1. 重新加载ufw(通常不需要)
sudo ufw reload

方法二:使用 iptables(直接配置)

如果你使用原始的iptables:

  1. 临时开放端口(重启后失效)
# 开放TCP端口
sudo iptables -A INPUT -p tcp --dport 10088 -j ACCEPT

# 开放UDP端口
sudo iptables -A INPUT -p udp --dport 10088 -j ACCEPT
  1. 永久保存iptables规则
# 安装iptables持久化工具
sudo apt-get update
sudo apt-get install iptables-persistent

# 保存当前规则
sudo netfilter-persistent save
# 或
sudo iptables-save > /etc/iptables/rules.v4
  1. 检查已添加的规则
sudo iptables -L -n | grep 10088

方法三:使用 firewalld(较少见)

如果你的Ubuntu安装了firewalld:

# 添加端口
sudo firewall-cmd --zone=public --add-port=10088/tcp --permanent

# 重载配置
sudo firewall-cmd --reload

# 查看
sudo firewall-cmd --zone=public --list-ports

验证端口是否真正开放

  1. 本地检查监听状态
# 查看哪些程序在监听10088端口
sudo netstat -tlnp | grep 10088
sudo ss -tlnp | grep 10088
  1. 从外部测试连接
# 在另一台机器上测试(假设服务器IP是192.168.1.100)
telnet 192.168.1.100 10088
# 或
nc -zv 192.168.1.100 10088

针对内网穿透的特殊说明

如果你是为内网穿透客户端开放10088端口:

  1. 在内网机器上:开放10088端口通常是为了让本地服务(如Web服务)能被访问。
  2. 在公网服务器上:开放10088端口是为了让外部用户能通过此端口访问穿透的服务。

常见场景示例:

# 场景:内网穿透客户端将本地的SSH服务映射到公网服务器的10088端口
# 在公网服务器上执行:
sudo ufw allow 10088/tcp
sudo ufw reload

# 在内网客户端上执行(如果需要):
sudo ufw allow from 192.168.1.0/24 to any port 22  # 允许内网访问SSH

重要安全提示

  1. 限制访问来源(如果可能):
sudo ufw allow from 203.0.113.0/24 to any port 10088  # 仅允许特定IP段
  1. 结合服务控制:
# 允许特定服务(如果已定义)
sudo ufw allow OpenSSH  # 例如SSH服务
  1. 查看详细日志:
# 查看防火墙日志
sudo tail -f /var/log/ufw.log

故障排查

如果端口仍然无法访问:

  1. 检查服务是否真正在监听:
sudo lsof -i :10088
  1. 检查云服务商安全组(如果是云服务器):
    · AWS安全组、阿里云安全组、腾讯云安全组等都需要相应设置。
  2. 检查应用程序配置:
    · 确保应用程序绑定到 0.0.0.0 而不是 127.0.0.1

最简单的操作流程:

# 1. 检查状态
sudo ufw status

# 2. 如果未启用,启用它
sudo ufw enable

# 3. 开放10088端口
sudo ufw allow 10088/tcp

# 4. 验证
sudo ufw status numbered

这样配置后,10088端口就应该可以被外部访问了。

ubuntu创建用户

在 Ubuntu Server 中创建新用户有几种常用方法,以下是详细步骤:

方法1:使用 adduser 命令(推荐)

# 创建用户并设置密码
sudo adduser username

# 系统会交互式地提示:
# 1. 设置密码
# 2. 确认密码
# 3. 填写用户信息(可跳过)

方法2:使用 useradd 命令

# 基本创建用户(不创建家目录)
sudo useradd username

# 创建用户并同时创建家目录
sudo useradd -m username

# 创建用户并指定家目录路径
sudo useradd -m -d /path/to/home username

# 创建用户并指定登录shell
sudo useradd -m -s /bin/bash username

# 创建用户后需要手动设置密码
sudo passwd username

方法3:创建用户并添加到 sudo 组

# 创建用户
sudo adduser username

# 将用户添加到 sudo 组(获取管理员权限)
sudo usermod -aG sudo username

# 验证用户是否在 sudo 组
groups username

方法4:创建系统用户(无家目录,用于服务)

# 创建系统用户(无家目录)
sudo useradd -r username

# 或使用 adduser 创建系统用户
sudo adduser --system --no-create-home username

常用选项和参数

# 创建用户时指定UID
sudo useradd -u 1001 username

# 创建用户时指定主要组
sudo useradd -g groupname username

# 创建用户时指定多个附加组
sudo useradd -G group1,group2 username

# 设置用户过期时间
sudo useradd -e 2024-12-31 username

# 创建用户时设置注释信息
sudo useradd -c "User Description" username

用户管理相关命令

# 删除用户(保留家目录)
sudo userdel username

# 删除用户及家目录
sudo userdel -r username

# 修改用户属性
sudo usermod [options] username

# 锁定用户账户
sudo usermod -L username

# 解锁用户账户
sudo usermod -U username

# 查看用户信息
id username
finger username  # 需要安装 finger 包
getent passwd username

最佳实践建议

  1. 使用 adduser 而不是 useradd:
    · adduser 更友好,会创建家目录、提示设置密码
    · useradd 是低级工具,需要更多参数
  2. 安全建议:
   # 创建用户时强制密码策略
   sudo adduser --disabled-password username  # 创建无密码用户
   sudo passwd username  # 随后设置强密码

   # 强制首次登录修改密码
   sudo passwd --expire username
  1. 验证用户创建成功:
   # 检查用户是否存在
   grep username /etc/passwd

   # 检查家目录是否创建
   ls -la /home/username

   # 测试登录
   su - username

示例:完整创建流程

# 1. 创建开发人员用户
sudo adduser developer

# 2. 添加到必要组
sudo usermod -aG sudo,www-data,ssh developer

# 3. 配置SSH密钥(可选)
sudo mkdir -p /home/developer/.ssh
sudo nano /home/developer/.ssh/authorized_keys
# 粘贴公钥后设置权限
sudo chown -R developer:developer /home/developer/.ssh
sudo chmod 700 /home/developer/.ssh
sudo chmod 600 /home/developer/.ssh/authorized_keys

# 4. 禁用密码登录(仅允许SSH密钥,可选)
sudo nano /etc/ssh/sshd_config
# 修改:PasswordAuthentication no
sudo systemctl restart ssh

这样你就成功创建了新用户!根据你的需求选择合适的方法。

去除强制变成https

这个问题是因为WordPress设置了强制HTTPS重定向。您需要从几个地方检查:
1. 首先检查WordPress设置
登录WordPress后台
“`bash
# 使用浏览器访问
http://100.88.88.150/wp-admin
“`
在后台检查:
1. 设置 → 常规
· WordPress地址(URL)
· 站点地址(URL)
确保两者都是 http://100.88.88.150(不是https)
2. WordPress可能被插件或主题强制HTTPS

2. 检查数据库设置

“`bash
# 查看WordPress的站点URL设置
sudo mysql -u root -p wordpress -e “SELECT * FROM wp_options WHERE option_name IN (‘siteurl’, ‘home’);”
“`

如果显示https,修改它:

“`bash
# 修改为HTTP
sudo mysql -u root -p wordpress << EOF UPDATE wp_options SET option_value = 'http://100.88.88.150' WHERE option_name = 'siteurl'; UPDATE wp_options SET option_value = 'http://100.88.88.150' WHERE option_name = 'home'; EOF ``` 3. 检查wp-config.php设置 ```bash # 查看配置文件是否有强制HTTPS sudo grep -i "https\|ssl\|443" /var/www/wordpress/wp-config.php # 常见的强制HTTPS设置 # define('FORCE_SSL_ADMIN', true); # define('FORCE_SSL_LOGIN', true); # $_SERVER['HTTPS'] = 'on'; ``` 如果有,注释或删除它们: ```bash sudo nano /var/www/wordpress/wp-config.php ``` 查找并注释掉: ```php // 注释掉这些行 // define('FORCE_SSL_ADMIN', true); // define('FORCE_SSL_LOGIN', true); // $_SERVER['HTTPS'] = 'on'; ``` 4. 检查.htaccess文件(如果存在) ```bash # Nginx通常不用.htaccess,但WordPress可能生成 sudo ls -la /var/www/wordpress/.htaccess # 如果有,检查重定向规则 sudo grep -i "https\|redirect\|rewrite" /var/www/wordpress/.htaccess ``` 5. 检查Nginx配置 ```bash # 查看是否有301重定向到HTTPS sudo grep -r "301\|redirect\|https" /etc/nginx/sites-available/ # 检查您的WordPress配置 sudo cat /etc/nginx/sites-available/wordpress | grep -A5 -B5 "301\|https" ``` 6. 快速修复脚本 创建一个修复脚本: ```bash cat > fix_https_redirect.sh << 'EOF' #!/bin/bash echo "=== 修复HTTPS强制重定向 ===" # 1. 备份数据库 echo "1. 备份数据库..." sudo mysqldump -u root -p wordpress > /tmp/wordpress_backup_$(date +%Y%m%d).sql

# 2. 修改数据库URL
echo “2. 修改数据库中的URL设置…”
sudo mysql -u root -p wordpress << 'MYSQL_SCRIPT' UPDATE wp_options SET option_value = REPLACE(option_value, 'https://', 'http://') WHERE option_name IN ('siteurl', 'home'); UPDATE wp_options SET option_value = 'http://100.88.88.150' WHERE option_name = 'siteurl'; UPDATE wp_options SET option_value = 'http://100.88.88.150' WHERE option_name = 'home'; MYSQL_SCRIPT # 3. 检查wp-config.php echo "3. 检查wp-config.php..." sudo sed -i "s/define('FORCE_SSL_ADMIN', true);/\/\/define('FORCE_SSL_ADMIN', true);/g" /var/www/wordpress/wp-config.php sudo sed -i "s/define('FORCE_SSL_LOGIN', true);/\/\/define('FORCE_SSL_LOGIN', true);/g" /var/www/wordpress/wp-config.php sudo sed -i "/\$_SERVER\['HTTPS'\]/d" /var/www/wordpress/wp-config.php # 4. 清理缓存(如果有) echo "4. 清理缓存..." sudo rm -rf /var/www/wordpress/wp-content/cache/* 2>/dev/null

# 5. 重启服务
echo “5. 重启服务…”
sudo systemctl restart nginx
sudo systemctl restart php8.1-fpm

echo “修复完成!”
echo “现在测试:curl -I http://100.88.88.150”
EOF

chmod +x fix_https_redirect.sh
sudo ./fix_https_redirect.sh
“`

7. 临时解决方法(直接修改Nginx)

如果上述方法无效,可以在Nginx配置中强制HTTP:

“`bash
# 编辑Nginx配置
sudo nano /etc/nginx/sites-available/wordpress
“`

在server块中添加(如果已经有重定向,先删除):

“`nginx
server {
listen 80;
server_name 100.88.88.150;

# 强制HTTP,避免任何HTTPS重定向
if ($http_x_forwarded_proto = “https”) {
set $http_x_forwarded_proto “http”;
}

# 拦截WordPress的重定向
location / {
# 覆盖WordPress的任何重定向
proxy_set_header X-Forwarded-Proto http;
proxy_set_header HTTPS off;

# 原有的try_files规则
try_files $uri $uri/ /index.php?$args;
}

# … 其他配置保持不变
}
“`

然后重启:

“`bash
sudo nginx -t
sudo systemctl reload nginx
“`

8. 测试是否修复

“`bash
# 测试重定向
curl -I http://100.88.88.150

# 应该返回200而不是301
# 如果要详细跟踪重定向
curl -L -v http://100.88.88.150 2>&1 | grep -i “location\|http”

# 或者使用更简单的测试
curl -s -o /dev/null -w “%{http_code}” http://100.88.88.150
# 应该返回200
“`

9. 如果仍有问题,启用调试模式

“`bash
# 在wp-config.php中添加调试
sudo nano /var/www/wordpress/wp-config.php
“`

添加:

“`php
define(‘WP_DEBUG’, true);
define(‘WP_DEBUG_LOG’, true);
define(‘WP_DEBUG_DISPLAY’, false);
“`

然后检查日志:

“`bash
sudo tail -f /var/www/wordpress/wp-content/debug.log
“`

10. 彻底排查流程

“`bash
# 一步步排查
echo “=== 排查步骤 ===”

echo “1. 检查Nginx配置…”
sudo nginx -T 2>/dev/null | grep -i “rewrite\|redirect\|https”

echo “2. 检查数据库…”
sudo mysql -u root -p wordpress -e “SELECT option_name, option_value FROM wp_options WHERE option_name LIKE ‘%url%’ OR option_value LIKE ‘%https%’;”

echo “3. 检查配置文件…”
sudo grep -r “https\|SSL” /var/www/wordpress/wp-config.php

echo “4. 检查主题和插件…”
sudo find /var/www/wordpress/wp-content -name “*.php” -exec grep -l “force_ssl\|https” {} \;

echo “5. 检查headers…”
curl -I http://100.88.88.150
“`

最可能的原因和解决方案

根据您的输出 X-Redirect-By: WordPress,重定向来自WordPress本身,不是Nginx。按照以下优先级解决:

优先级1:数据库设置(95%可能)

“`bash
# 执行这个最简单有效的修复
sudo mysql -u root -p wordpress -e “UPDATE wp_options SET option_value = ‘http://100.88.88.150’ WHERE option_name IN (‘siteurl’, ‘home’);”
“`

优先级2:WordPress配置

“`bash
# 检查并修复wp-config.php
sudo sed -i “s/https:/http:/g” /var/www/wordpress/wp-config.php
sudo sed -i “/FORCE_SSL/d” /var/www/wordpress/wp-config.php
“`

优先级3:清理缓存

“`bash
sudo rm -rf /var/www/wordpress/wp-content/cache/*
sudo systemctl restart php8.1-fpm
sudo systemctl reload nginx
“`

立即执行的快速修复

“`bash
# 一行命令修复(最有效)
sudo mysql -u root -p wordpress -e “UPDATE wp_options SET option_value = ‘http://100.88.88.150’ WHERE option_name IN (‘siteurl’, ‘home’);” && sudo systemctl reload nginx && curl -I http://100.88.88.150
“`

请先尝试优先级1的数据库修复,这通常能解决99%的WordPress强制HTTPS问题。

mysql操作

# 登录MySQL

sudo mysql -u root -p

# 创建数据库与授权

— 创建数据库 codish
CREATE DATABASE IF NOT EXISTS codish
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

 

创建用户 joehuang(如果不存在)

CREATE USER IF NOT EXISTS ‘joehuang’@’%’ IDENTIFIED BY ‘your_password_here’;

— 或者如果只允许本地访问
— CREATE USER IF NOT EXISTS ‘joehuang’@’localhost’ IDENTIFIED BY ‘your_password_here’;

授予用户对 codish 数据库的所有权限

GRANT ALL PRIVILEGES ON codish.* TO ‘joehuang’@’%’;

 

— 刷新权限使更改生效
FLUSH PRIVILEGES;

— 显示用户权限
SHOW GRANTS FOR ‘joehuang’@’%’;

# 修改用户密码(通用语法)
ALTER USER ‘用户名’@’主机’ IDENTIFIED BY ‘新密码’;
FLUSH PRIVILEGES;

# 示例:修改wpuser密码
ALTER USER ‘username’@’localhost’ IDENTIFIED BY ‘MyNewStrongPass123!’;
FLUSH PRIVILEGES;

# 退出
EXIT;

# 登录MySQL
sudo mysql -u root -p
# 输入密码

# 查看所有用户和主机
SELECT User, Host FROM mysql.user;

# 查看详细信息
SELECT User, Host, plugin, authentication_string FROM mysql.user;

# 查看用户权限
SHOW GRANTS FOR ‘wpuser’@’localhost’;

# 退出
EXIT;

 

修改MySQL root密码的方法取决于你的MySQL版本和操作系统。以下是几种常见的方法:

方法1:已知原密码的情况下修改

“`sql
— 登录MySQL后执行
ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘新密码’;
FLUSH PRIVILEGES;
“`

方法2:忘记密码时修改(安全模式)

Windows系统:

1. 停止MySQL服务:

“`cmd
net stop mysql
# 或 MySQL80(根据版本)
net stop mysql80
“`

1. 创建初始化文件 mysql-init.txt:

“`sql
ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘新密码’;
“`

1. 以安全模式启动并加载初始化文件:

“`cmd
mysqld –init-file=C:\mysql-init.txt –console
“`

1. 重启MySQL服务:

“`cmd
net start mysql
“`

Linux/Mac系统:

1. 停止MySQL服务:

“`bash
sudo systemctl stop mysql
# 或
sudo service mysql stop
“`

1. 编辑配置文件:

“`bash
sudo vim /etc/my.cnf
# 或
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
“`

1. 在 [mysqld] 部分添加:

“`
skip-grant-tables
“`

1. 重启MySQL并登录:

“`bash
sudo systemctl restart mysql
# 或
sudo service mysql restart

mysql -u root
“`

1. 在MySQL中重置密码:

“`sql
— MySQL 5.7.6及以下
UPDATE mysql.user SET authentication_string=PASSWORD(‘新密码’) WHERE User=’root’;
— MySQL 5.7.6及以上
ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘新密码’;

FLUSH PRIVILEGES;
“`

1. 移除配置文件的 skip-grant-tables 并重启服务

方法3:使用mysqladmin工具

“`bash
mysqladmin -u root -p’旧密码’ password ‘新密码’
“`

重要提示:

1. 密码强度要求:MySQL 8.0+有密码策略要求,确保密码足够复杂
2. 密码特殊字符:如果密码包含特殊字符,需要用引号括起来
3. 远程root访问:如果需要远程访问,也要修改相应host的密码:
“`sql
ALTER USER ‘root’@’%’ IDENTIFIED BY ‘新密码’;
“`

验证修改是否成功:

“`bash
mysql -u root -p
# 输入新密码测试
“`

忘记root密码的完整流程(推荐):

1. 停止MySQL服务
2. 使用–skip-grant-tables启动
3. 无密码登录MySQL
4. 执行密码修改命令
5. 重启MySQL服务

注意:生产环境操作前请做好备份,并确保服务窗口期最小化。

防火墙设定

# 1. 首先查看当前状态
sudo ufw status
# 应该显示:Status: inactive

# 2. 添加必要的规则(在启用前配置好)
sudo ufw allow ssh # 允许SSH连接(非常重要!)
sudo ufw allow ‘Nginx HTTP’
sudo ufw allow ‘Nginx HTTPS’ # 如果需要HTTPS

# 3. 查看添加的规则
sudo ufw show added

# 4. 启用防火墙
sudo ufw enable
# 会提示:Command may disrupt existing ssh connections. Proceed with operation (y|n)?
# 输入 y 确认

# 5. 重新加载规则
sudo ufw reload

# 6. 查看完整状态
sudo ufw status verbose