從零開始安裝¶
服務器系統選擇Debian13
Nginx¶
安装依赖,打开终端并安装必要的依赖:
apt update && apt install -y btop build-essential libjemalloc-dev zlib1g-dev libpcre2-dev libssl-dev tar unzip git wget screen curl ncdu rsync apache2-utils
#如果网路出现中断,可以执行命令`screen -R develop`重新连接安装窗口
screen -S dev
下载 Nginx 和必要的库: 下载 Nginx 的源码,apt安裝的openssl、PCRE以及 quiche(用于 HTTP/3 和 QUIC 支持):
# 替换为最新版本
wget http://nginx.org/download/nginx-1.29.4.tar.gz && tar -zxvf nginx-1.29.4.tar.gz && cd nginx-1.29.4
编译 Nginx: 使用提供的 configure 参数编译 Nginx,并包含 QUIC 和 HTTP/3 的支持:
# 添加组
groupadd www
# 添加用户
useradd -g www -s /sbin/nologin www
#查看新增用户
id www
./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-http_ssl_module --with-stream --with-stream_ssl_preread_module --with-stream_ssl_module --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module --with-http_mp4_module --with-pcre --with-pcre-jit --with-ld-opt=-ljemalloc --with-http_v3_module
make -j $(nproc) && make install
nginx加密¶
apt install apache2-utils
# 设置用户名和密码,并把他们保存到指定文件中
mkdir -p /usr/local/nginx/passwd
htpasswd -cB /usr/local/nginx/passwd/passwd admin
# /usr/local/nginx/passwd/passwd 是生成密码文件的路径,然后admin是用户名,你可以根据需要自行设置成其它用户名。运行命令后,会要求你连续输入两次密码。输入成功后,会提示已经为admin这个用户添加了密码
配置环境变量
nano ~/.bashrc
# 在文件末尾添加以下行,将Nginx的可执行文件路径添加到PATH环境变量中。确保替换/usr/local/nginx/sbin为您Nginx的实际可执行文件路径:
export PATH=$PATH:/usr/local/nginx/sbin
# 保存并关闭文件。
# 更新~/.bashrc文件,使更改生效:
source ~/.bashrc
# 验证
nginx -v
配置 Nginx: 编辑 /usr/local/nginx/conf/nginx.conf 文件,添加或修改配置以启用 HTTP/3 和 QUIC。
设置开机自启
创建 Systemd 服务文件:
使用您喜欢的文本编辑器创建一个名为 nginx.service 的文件。您可以使用 nano /etc/systemd/system/nginx.service 命令来创建这个文件。
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
注意:原先nginx的PIDFile目錄是/var/run/,現在已經調整為/run/
重新加载 Systemd 配置: 保存文件后,执行以下命令使 Systemd 重新加载配置文件,识别新的服务:
systemctl daemon-reload
# 启用 Nginx 服务:
systemctl enable nginx
# 启动 Nginx 服务:
systemctl start nginx
# 检查服务状态:
systemctl status nginx
# 重啓 Nginx 服务:
systemctl restart nginx
nginx日志每日备份,并清除旧日志¶
tee /etc/logrotate.d/nginx > /dev/null <<EOF
/data/wwwlogs/*nginx.log {
daily
rotate 5
missingok
dateext
compress
notifempty
sharedscripts
postrotate
[ -e /var/run/nginx.pid ] && kill -USR1 $(cat /var/run/nginx.pid)
endscript
}
EOF
nano /data/wwwlogs/delete_old_logs.sh
#!/bin/bash
# 定義要清理的目錄
LOG_DIR="/data/wwwlogs"
# 使用 find 命令查找符合條件的文件並刪除
find "$LOG_DIR" -name "*_nginx.log-*" -type f -mtime +7 -exec rm -f {} \;
# 打印清理完成的訊息
echo "已刪除 7 天之前的日誌文件: $(date)"
遇到的问题¶
通过
systemctl status nginx看到systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
这个错误通常是由于systemd在Nginx启动时尝试读取pid文件,但Nginx尚未完全启动而导致的。解决这个问题的方法是创建一个新的目录并添加一个配置文件。以下是解决这个问题的步骤:
# 创建一个新目录
mkdir /etc/systemd/system/nginx.service.d
# 使用nano文本编辑器创建并添加内容到文件
nano /etc/systemd/system/nginx.service.d/override.conf
在新打开的文件中添加以下内容:
[Service]
ExecStartPost=/bin/sleep 0.1
保存文件后,运行以下命令刷新并启动NGINX服务:
systemctl daemon-reload
systemctl restart nginx.service
Redis¶
常用命令¶
# 自启
systemctl enable redis-server
# 运行
systemctl start redis-server
# 状态
systemctl status redis-server
# 重启
systemctl restart redis-server
# 连接
redis-cli
安装最新的社区版本¶
# 2. 安裝必要的套件
apt install apt-transport-https curl ca-certificates gpg -y
# 3.導入 Redis.io 倉庫
# 導入 GPG 金鑰以驗證資料來源
curl -fsSL https://packages.redis.io/gpg | gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
# 導入倉庫
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/redis.list
# 4. 透過 APT 命令安裝 Redis
apt update && apt install redis redis-server redis-tools
# 5. 驗證 Redis 安裝
apt-cache policy redis
# 6. 驗證 Redis 是否正常執行
systemctl status redis-server
PHP¶
安装必要的依赖项
apt update && apt install -y build-essential autoconf bison re2c libxml2-dev libldap2-dev libedit-dev libcurl4-openssl-dev libpng-dev libonig-dev libsqlite3-dev libssl-dev libpspell-dev aspell aspell-en libzip-dev libicu-dev libreadline-dev libfreetype6-dev libgmp-dev libgd-dev libexif-dev libgettextpo-dev libffi-dev libpq-dev libmemcached-dev libmagickwand-dev libxslt-dev libzip-dev
下载PHP源代码
wget https://www.php.net/distributions/php-8.3.29.tar.gz && tar -xzf php-8.3.29.tar.gz && cd php-8.3.29
配置PHP
./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-config-file-scan-dir=/usr/local/php/etc/php.d \
--enable-mbstring \
--enable-bcmath \
--enable-pcntl \
--enable-ftp \
--enable-exif \
--enable-calendar \
--enable-shmop \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--with-curl \
--with-iconv \
--with-gmp \
--enable-gd \
--with-webp \
--with-jpeg \
--with-xpm \
--with-freetype \
--with-openssl \
--with-pdo-mysql \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-gettext=/usr \
--with-xsl \
--enable-intl \
--with-ldap \
--with-ldap-sasl \
--with-mysql-sock=/var/run/mysqld/mysqld.sock \
--with-libdir=/lib/x86_64-linux-gnu \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--with-libedit \
--with-readline \
--enable-sockets \
--enable-soap \
--enable-opcache \
--with-sqlite3 \
--with-pdo-sqlite \
--with-zip \
--with-zlib
编译
# make -j 1 && make install
make -j $(nproc) && make install
配置环境变量
nano ~/.bashrc
# 在文件末尾添加以下行
export PATH=$PATH:/usr/local/php/bin
# 保存并关闭文件。
# 更新~/.bashrc文件,使更改生效:
source ~/.bashrc
# 验证
php -v
nano /etc/systemd/system/php-fpm.service
# php-fpm.service内容
[Unit]
Description=The PHP FastCGI Process Manager
After=network.target
[Service]
Type=simple
PIDFile=/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
# 配置php-fpm.service
systemctl daemon-reload
systemctl start php-fpm.service
systemctl stop php-fpm.service
systemctl restart php-fpm.service
systemctl enable php-fpm.service
systemctl status php-fpm.service
php-fpm[16492]: [22-Jun-2024 13:41:46] NOTICE: PHP message: PHP Warning: PHP Startup: Invalid library (maybe not a PHP library) 'fileinfo.so' in Unknown on line 0 make clean重新启动 phpize && ./configure && make && make install
安装其他组件
# 安装PECL
wget https://pear.php.net/go-pear.phar
php go-pear.phar
#升级
pecl channel-update pecl.php.net
pecl list-upgrades
pecl upgrade 扩展名
pecl upgrade-all
#安装 ImageMagick:首先安装 ImageMagick 库。这可以通过以下命令完成:
apt-get install imagemagick -y
#安装 ImageMagick 的 PHP 扩展依赖:您需要安装 PHP 的 ImageMagick 扩展(即 imagick)的依赖项:
#apt-get install php-imagick libmagickwand-dev
#使用 PECL 安装 imagick 扩展:
pecl install imagick
#配置 PHP 以使用 imagick 扩展:安装完成后,在您的 php.ini 文件中添加以下行以启用扩展:
extension=imagick.so
#安装 Memcached 服务器:首先,安装 Memcached:
apt-get install memcached -y
#安装 Memcached 的 PHP 扩展依赖:然后安装 PHP 的 Memcached 扩展的依赖项:
#apt-get install php-memcached libmemcached-dev
#使用 PECL 安装 Memcached 扩展:
pecl install memcached
#配置 PHP 以使用 Memcached 扩展:在 php.ini 文件中添加以下行来启用 Memcached 扩展:
extension=memcached.so
apt install redis-server -y
pecl install redis
extension=redis.so
连接mysql数据库¶
需要修改php.ini
[Pdo_mysql]
; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults.
pdo_mysql.default_socket=/tmp/mysql.sock
; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults.
; https://php.net/mysqli.default-socket
mysqli.default_socket = /tmp/mysql.sock
phpMyAdmin¶
下载安装¶
wget https://files.phpmyadmin.net/phpMyAdmin/5.2.3/phpMyAdmin-5.2.3-all-languages.zip
unzip phpMyAdmin-5.2.3-all-languages.zip && mv phpMyAdmin-5.2.3-all-languages phpMyAdmin && cd phpMyAdmin
mkdir -p /xxx/phpMyAdmin/tmp/
chmod -R 777 /xxx/phpMyAdmin/tmp/
MySQL¶
MySQL
下载地址参考:https://dev.mysql.com/downloads/mysql/
基础¶
apt-get update
apt-get install -y libncurses5-dev libssl-dev bison cmake make gcc g++ wget pkg-config libfido2-dev libtirpc-dev
screen -R develop
下载带Boost库的MySQL源码¶
wget https://dev.mysql.com/get/Downloads/MySQL-8.4/mysql-8.4.7.tar.gz && tar xzf mysql-8.4.7.tar.gz
新增用户组¶
# 添加组
groupadd mysql
# 添加用户
useradd -g mysql -s /sbin/nologin mysql
#查看新增用户
id mysql
编译MySQL¶
使用cmake来配置编译选项
cd mysql-8.4.7
mkdir mysql-build && cd mysql-build
cmake /root/mysql-8.4.7 -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DDEFAULT_CHARSET=utf8mb4 \
-DWITH_FIDO=system \
-DDEFAULT_COLLATION=utf8mb4_general_ci
编译&安裝MySQL:
make -j$(nproc) && make install
#make -j1
配置MySQL¶
tee /etc/my.cnf <<EOF
[client]
port = 3306
socket = /tmp/mysql.sock
[mysql]
no-auto-rehash
[mysqld]
port = 3306
bind-address = 127.0.0.1
socket = /tmp/mysql.sock
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
pid-file = /usr/local/mysql/data/mysql.pid
user = mysql
server-id = 1
# 字符集
init-connect = 'SET NAMES utf8mb4'
character-set-server = utf8mb4
collation-server = utf8mb4_0900_ai_ci
# 跳过 DNS 解析,加速连接(必须确保权限表 Host 是 IP 或 localhost)
skip-name-resolve
# 禁止外部锁
skip-external-locking
max_connections = 200
max_connect_errors = 10000
# 增加积压队列,防止突发连接丢弃
back_log = 512
# 开启线程池缓存,减少创建线程开销
thread_cache_size = 64
# 超时设置:Web应用通常不需要保持 8 小时连接,设为 1 小时释放资源
interactive_timeout = 3600
wait_timeout = 3600
open_files_limit = 65535
# 根據實際需求調整
# 针对 WordPress 查询优化,256K-4M 足矣
read_buffer_size = 256K
read_rnd_buffer_size = 512K
sort_buffer_size = 4M
join_buffer_size = 4M
# 临时表大小 (复杂查询用)
tmp_table_size = 64M
max_heap_table_size = 64M
# Binlog 缓存
binlog_cache_size = 1M
# =================================================================
# InnoDB 引擎优化 - 核心性能
# =================================================================
default_storage_engine = InnoDB
innodb_file_per_table = 1
# innodb_buffer_pool_size 設定為可用內存的 50% - 75%
innodb_buffer_pool_size = 2G
# 实例数:设为 2 (每 1GB 一个实例) 减少锁竞争
innodb_buffer_pool_instances = 2
# 日志刷盘策略:
# 1 = 最安全,0 = 最快
# 2 = 折中 (每秒刷盘),崩系统丢1秒数据,崩Mysql不丢。适合高性能 VPS。
innodb_flush_log_at_trx_commit = 2
# SSD 优化 IO
# 避免双重缓冲,直接写入磁盘,降低 CPU 和内存开销
innodb_flush_method = O_DIRECT
# 针对 VPS SSD 的 IOPS 能力调整 (普通 SSD 设 2000 左右)
innodb_io_capacity = 2000
innodb_io_capacity_max = 4000
# CPU 线程:4核 CPU 建议限制并发,避免上下文切换过多
innodb_thread_concurrency = 4
innodb_write_io_threads = 4
innodb_read_io_threads = 4
# Redo Log (MySQL 8.0+ 使用 capacity,旧版使用 log_file_size)
# 只有在大量写入时才需要巨大 Log,1GB 足够应付 WP
innodb_redo_log_capacity = 1G
# 兼容旧版配置 (如果 MySQL < 8.0.30)
# innodb_log_file_size = 512M
innodb_log_buffer_size = 16M
innodb_lock_wait_timeout = 50
# =================================================================
# 日志配置
# =================================================================
log_bin = mysql-bin
binlog_format = ROW
# 保留 7 天日志
binlog_expire_logs_seconds = 604800
# 建議開啟慢查詢日誌
slow_query_log = 1
# 設定慢查詢時間閾值,例如 1 秒
long_query_time = 1
# 记录未使用索引的查询,便于优化 WP 插件
log_queries_not_using_indexes = 0
slow_query_log_file = /usr/local/mysql/data/mysql-slow.log
log_error = /usr/local/mysql/data/mysql-error.log
# =================================================================
# 其他
# =================================================================
explicit_defaults_for_timestamp = 1
# 建議開啟 performance_schema 以便監控性能
# 内存如果吃紧,建议关闭此功能节省 200-400MB 内存
performance_schema = 1
max_allowed_packet = 128M
open_files_limit = 65535
table_open_cache = 2000
[mysqldump]
quick
max_allowed_packet = 128M
[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
read_buffer = 4M
write_buffer = 4M
EOF
初始化数据库¶
初始化数据库并设置权限。
chown -R mysql:mysql /usr/local/mysql
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --upgrade=AUTO
设置系统服务¶
创建一个系统服务文件,使MySQL可以作为服务启动。
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
update-rc.d mysqld defaults
启动MySQL服务¶
service mysqld start
# 自启
systemctl enable mysqld.service
systemctl status mysqld.service
systemctl restart mysqld.service
后续配置¶
现在MySQL已经安装并运行了,您可能需要运行mysql_secure_installation脚本来设置root用户密码并按需进行其他安全设置。
sudo /usr/local/mysql/bin/mysql_secure_installation
配置内容:
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Connecting to MySQL using a blank password:
这表明脚本正在尝试使用空密码连接到 MySQL 服务器。这是因为在初始安装后,root 用户默认没有密码。
VALIDATE PASSWORD COMPONENT:
这是 MySQL 的一个功能,用于检查密码的强度。如果启用,它将强制用户只能设置足够安全的密码。如果您选择“是(y/Y)”,则会启用此功能,如果选择其他任何键,则不会启用。
---
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:
是关于 MySQL 的密码验证策略的设置。MySQL 提供了三个级别的密码强度验证选项,以帮助确保数据库的安全性。这些选项定义了密码必须符合的规则:
LOW:
长度:密码长度必须大于或等于 8 个字符。
这是最基本的密码安全级别,只要求密码有一定的长度。
MEDIUM:
长度:密码长度必须大于或等于 8 个字符。
字符类型:密码必须包含数字、大小写字母和特殊字符。
这个级别在密码长度的基础上增加了字符多样性的要求,提高了密码的复杂度。
STRONG:
长度:密码长度必须大于或等于 8 个字符。
字符类型:密码必须包含数字、大小写字母、特殊字符,并且不包含字典文件中的单词。
这是最高的安全级别,除了长度和字符多样性外,还检查密码是否包含常见的、易于猜测的单词。
---
Estimated strength of the password: 50
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) :
于评估您为 MySQL root 用户设置的密码强度。当您在配置过程中输入密码时,MySQL 会根据其内置的评估规则估计密码的强度,并给出一个分数。这个分数是一个从 0 到 100 的数值,反映了密码的安全性。
---
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) :
用于提升MySQL安装的安全性。在这个特定的步骤中,脚本解释了MySQL默认安装中存在的“匿名用户”账户,并询问您是否要移除它。
---
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) :
默认情况下,出于安全考虑,MySQL的root用户仅被允许从本地机器(即'localhost')登录。这个设置可以防止远程用户尝试通过网络猜测或暴力破解root账户的密码。
Disallow root login remotely?:这个问题询问您是否要禁止root用户从远程地址登录到MySQL服务器。这是一个重要的安全措施,特别是在面对公共或不安全网络时。
如果您选择 禁止 root用户从远程登录,可以按 y 或 Y。这意味着root用户只能从本地机器登录,增加了安全性。
如果您选择允许root用户从远程登录,可以按任何其他键。请注意,这可能会增加安全风险,尤其是如果密码强度不足或者服务器暴露在公共网络上时。
---
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) :
MySQL 默认安装时随带的名为 'test' 的数据库。
关于 'test' 数据库:MySQL 默认创建一个名为 'test' 的数据库,这个数据库可以被任何用户访问,主要目的是为了方便测试。在这个数据库中,用户可以进行实验和学习,而不会影响到其他数据库。
移除 'test' 数据库的建议:与匿名用户类似,这个 'test' 数据库在生产环境中可能会构成安全风险,因为它允许任何人访问。因此,通常建议在将MySQL服务器用于生产环境之前移除这个数据库。
操作提示:
如果您选择 移除 'test' 数据库及其访问权限,可以按 y 或 Y。
如果您决定保留 'test' 数据库,可以按任何其他键。
---
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) :
出现在脚本的最后阶段。它与重新加载 MySQL 的权限表格有关。
背景:在您通过 mysql_secure_installation 脚本做出一系列安全相关的更改(如移除匿名用户、删除'test'数据库、更改root用户的远程访问权限等)后,这些更改需要更新到MySQL的权限系统中才能生效。
重新加载权限表格:此步骤是为了确保您所做的所有更改立即生效。权限表格包含了用户、权限和其他安全相关的信息。重新加载这些表格意味着所有的安全更改将被应用并立即生效。
操作提示:
如果您选择 现在重新加载权限表格,请按 y 或 Y。这通常是推荐的操作,因为它确保了您的安全设置更改立即生效。
如果您选择不重新加载权限表格,可以按任何其他键。这意味着您所做的更改将在下次MySQL重启时生效。
添加路径¶
临时添加到 PATH 在当前会话中,您可以临时将 MySQL 的 bin 目录添加到 PATH。这样做可以直接调用 mysql 而不需要指定完整路径。运行以下命令:
export PATH=$PATH:/usr/local/mysql/bin
永久添加到 PATH 为了在任何新的终端会话中都能够访问 mysql 命令,您需要将 /usr/local/mysql/bin 永久添加到 PATH。这通常通过在您的 shell 配置文件(如 .bashrc 或 .bash_profile)中添加上面的 export 命令来实现。
# 编辑
nano ~/.bashrc
# 添加内容
export PATH=$PATH:/usr/local/mysql/bin
#刷新并生效
source ~/.bashrc
用户操作¶
-- 查看所有用户的权限:
SELECT User, Host, Select_priv, Insert_priv, Update_priv, Delete_priv, Grant_priv FROM mysql.user;
-- 默认情况下,用户(如root)可能仅限于从localhost访问。要允许用户从任何主机远程连接,您可以使用以下命令(请谨慎使用,特别是对root用户):
UPDATE mysql.user SET Host = '%' WHERE User = 'your_username' AND Host = 'localhost';
FLUSH PRIVILEGES;
确保MySQL配置允许远程连接:
编辑MySQL配置文件(通常是/etc/mysql/my.cnf或/etc/my.cnf),确保bind-address行设置为允许远程连接:bind-address = 0.0.0.0
这允许MySQL监听所有网络接口。编辑后,需要重启MySQL服务使更改生效 : sudo systemctl restart mysql
-- 新增用户,并给予权限
CREATE USER 'admin'@'127.0.0.1' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'127.0.0.1';
FLUSH PRIVILEGES;
升級¶
# 停止MySQL服務
systemctl stop mysql
# 重新编译安装
# 覆蓋新版本配置文件後啟動服務:
systemctl start mysql
# 在 MySQL 8.0.16 及之後的版本(包括 8.4.x),mysql_upgrade 工具已經被棄用,且大部分升級任務會在你啟動新版本 mysqld 時自動完成,所以你不需要再手動執行 mysql_upgrade。
# mysql_upgrade -u root -p
mysqlcheck --all-databases --check-upgrade --auto-repair -u root -p
wget https://dev.mysql.com/get/Downloads/Shell-8.4/mysql-shell-8.4.5-src.tar.gz tar xzf mysql-shell-8.4.5-src.tar.gz