Debian 12 安装&卸载 MySQL 8.4 教程
<h1 id="mysql-84-安装指南">MySQL 8.4 安装指南</h1><p>本指南将详细介绍如何在 Linux (Debian/Ubuntu) 上手动安装 MySQL 8.4,并进行基本配置。</p>
<p>MySQL官网</p>
<hr>
<h2 id="1-安装前准备">1. 安装前准备</h2>
<h3 id="11-更新系统并安装必要依赖">1.1 更新系统并安装必要依赖</h3>
<p>在安装 MySQL 之前,先更新系统包并安装所需的库文件:</p>
<pre><code class="language-sh">sudo apt update && sudo apt upgrade -y
sudo apt-get install -y libaio1 libnuma1 libncurses6
</code></pre>
<ul>
<li><code>libaio1</code>:异步 I/O 支持库,MySQL 运行所需。</li>
<li><code>libnuma1</code>:NUMA(非均匀内存访问)支持库,提高性能。</li>
<li><code>libncurses6</code>:终端用户界面支持库,MySQL 客户端使用。</li>
</ul>
<hr>
<h2 id="2-下载-mysql-84">2. 下载 MySQL 8.4</h2>
<pre><code class="language-sh">cd ~
wget https://dev.mysql.com/get/Downloads/MySQL-8.4/mysql-8.4.4-linux-glibc2.28-x86_64.tar.xz
</code></pre>
<p>该命令从 MySQL 官方站点下载 MySQL 8.4.4 二进制包。</p>
<hr>
<h2 id="3-创建-mysql-用户和用户组">3. 创建 MySQL 用户和用户组</h2>
<p>为 MySQL 进程创建一个独立用户,确保安全性。</p>
<pre><code class="language-sh">sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql
</code></pre>
<ul>
<li><code>groupadd mysql</code>:创建 <code>mysql</code> 用户组。</li>
<li><code>useradd -r -g mysql -s /bin/false mysql</code>:创建 <code>mysql</code> 用户,<code>-r</code> 选项创建系统用户,<code>-s /bin/false</code> 使其无法直接登录。</li>
</ul>
<hr>
<h2 id="4-安装-mysql">4. 安装 MySQL</h2>
<h3 id="41-解压并移动到-usrlocal">4.1 解压并移动到 /usr/local/</h3>
<pre><code class="language-sh">cd /usr/local
sudo tar xvf ~/mysql-8.4.4-linux-glibc2.28-x86_64.tar.xz
sudo mv mysql-8.4.4-linux-glibc2.28-x86_64 mysql
cd /usr/local/mysql
sudo mkdir mysql-files
sudo chmod 750 mysql-files
</code></pre>
<h3 id="42-设置权限">4.2 设置权限</h3>
<pre><code class="language-sh">sudo chown -R mysql:mysql /usr/local/mysql
</code></pre>
<p>此步骤确保 MySQL 目录归 <code>mysql</code> 用户所有,避免权限问题。</p>
<hr>
<h2 id="5-配置环境变量">5. 配置环境变量</h2>
<h3 id="51-添加-mysql-到系统路径">5.1 添加 MySQL 到系统路径</h3>
<pre><code class="language-sh">echo 'export PATH=$PATH:/usr/local/mysql/bin' | sudo tee -a /etc/profile
source /etc/profile
</code></pre>
<p>这样就可以在任何地方运行 <code>mysql</code> 命令。</p>
<hr>
<h2 id="6-配置-mysql-服务器">6. 配置 MySQL 服务器</h2>
<h3 id="61-创建-mycnf-配置文件">6.1 创建 my.cnf 配置文件</h3>
<pre><code class="language-sh">cd /etc
sudo touch my.cnf
sudo chown root:root my.cnf
sudo chmod 644 my.cnf
</code></pre>
<h3 id="62-编辑-mycnf">6.2 编辑 my.cnf</h3>
<pre><code class="language-ini">
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
port=3306
log-error=/usr/local/mysql/data/mysql_error.log
user=mysql
secure_file_priv=/usr/local/mysql/mysql-files
local_infile=OFF
lower_case_table_names=1
</code></pre>
<ul>
<li><code>datadir</code>:数据存储路径。</li>
<li><code>socket</code>:MySQL 进程使用的 socket 文件。</li>
<li><code>log-error</code>:错误日志文件路径。</li>
<li><code>lower_case_table_names=1</code>:表名大小写不敏感(适用于 Windows 兼容性)。</li>
</ul>
<hr>
<h2 id="7-初始化-mysql-数据目录">7. 初始化 MySQL 数据目录</h2>
<pre><code class="language-sh">cd /usr/local/mysql
sudo bin/mysqld --defaults-file=/etc/my.cnf --initialize-insecure
</code></pre>
<ul>
<li><code>--initialize-insecure</code>:不生成默认 root 密码,允许手动设置。</li>
</ul>
<hr>
<h2 id="8-配置-mysql-systemd-服务">8. 配置 MySQL systemd 服务</h2>
<h3 id="81-创建-systemd-服务文件">8.1 创建 systemd 服务文件</h3>
<pre><code class="language-sh">cd /usr/lib/systemd/system
sudo touch mysqld.service
sudo chmod 644 mysqld.service
</code></pre>
<h3 id="82-编辑-mysqldservice">8.2 编辑 mysqld.service</h3>
<pre><code class="language-ini">
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
WantedBy=multi-user.target
User=mysql
Group=mysql
# Have mysqld write its state to the systemd notify socket
Type=notify
# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0
# Start main service
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf $MYSQLD_OPTS
# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql
# Sets open_files_limit
LimitNOFILE = 10000
Restart=on-failure
RestartPreventExitStatus=1
# Set environment variable MYSQLD_PARENT_PID. This is required for restart.
Environment=MYSQLD_PARENT_PID=1
PrivateTmp=false
</code></pre>
<h3 id="83-重新加载-systemd-并启用服务">8.3 重新加载 systemd 并启用服务</h3>
<pre><code class="language-sh">sudo systemctl daemon-reload
sudo systemctl enable mysqld.service
sudo systemctl start mysqld.service
sudo systemctl status mysqld.service
</code></pre>
<hr>
<h2 id="9-设置-mysql-root-用户密码">9. 设置 MySQL Root 用户密码</h2>
<pre><code class="language-sh">mysql -u root --skip-password
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
</code></pre>
<p>此步骤确保 root 用户有密码,防止安全风险。</p>
<hr>
<h2 id="10-验证-mysql-运行状态">10. 验证 MySQL 运行状态</h2>
<h3 id="101-检查数据库列表">10.1 检查数据库列表</h3>
<pre><code class="language-sh">cd /usr/local/mysql
bin/mysqlshow -u root -p
</code></pre>
<h3 id="102-查看-mysql-版本">10.2 查看 MySQL 版本</h3>
<pre><code class="language-sh">bin/mysqladmin -u root -p version
</code></pre>
<hr>
<h2 id="11-创建远程登录用户可选">11. 创建远程登录用户(可选)</h2>
<p>登录mysql</p>
<pre><code>mysql -u root -p
</code></pre>
<p>创建远程用户</p>
<pre><code class="language-mysql">CREATE USER 'zjw'@'%' IDENTIFIED BY '123456';
</code></pre>
<blockquote>
<p>这里创建了远程用户<code>zjw</code>,密码都为<code>123456</code></p>
</blockquote>
<p>授权远程用户</p>
<pre><code class="language-mysql">GRANT ALL PRIVILEGES ON *.* TO 'zjw'@'%' WITH GRANT OPTION;
</code></pre>
<p>查看用户</p>
<pre><code class="language-mysql">select user,host,plugin from mysql.user;
</code></pre>
<p>刷新权限</p>
<pre><code class="language-mysql">FLUSH PRIVILEGES;
exit
</code></pre>
<h2 id="12-结论">12. 结论</h2>
<p>至此,MySQL 8.4 已成功安装并运行。</p>
<hr>
<h1 id="mysql-84-卸载步骤">MySQL 8.4 卸载步骤</h1>
<h2 id="1-停止-mysql-服务">1. 停止 MySQL 服务</h2>
<pre><code class="language-sh">sudo systemctl stop mysqld
sudo systemctl disable mysqld
</code></pre>
<h2 id="2-删除-systemd-配置">2. 删除 systemd 配置</h2>
<pre><code class="language-sh">sudo rm -f /usr/lib/systemd/system/mysqld.service
sudo systemctl daemon-reload
</code></pre>
<h2 id="3-删除-mysql-用户和用户组可选">3. 删除 MySQL 用户和用户组(可选)</h2>
<p>如果不再需要 <code>mysql</code> 用户,可以删除它。</p>
<pre><code class="language-sh">sudo userdel -r mysql
sudo groupdel mysql
</code></pre>
<h2 id="4-删除-mysql-目录">4. 删除 MySQL 目录</h2>
<pre><code class="language-sh">sudo rm -rf /usr/local/mysql
</code></pre>
<h2 id="5-删除-mysql-配置文件">5. 删除 MySQL 配置文件</h2>
<pre><code class="language-sh">sudo rm -f /etc/my.cnf
</code></pre>
<h2 id="6-删除环境变量">6. 删除环境变量</h2>
<p>从 <code>/etc/profile</code> 移除 MySQL 相关的 <code>PATH</code> 设置。</p>
<pre><code class="language-sh">sudo sed -i '/export PATH=\$PATH:\/usr\/local\/mysql\/bin/d' /etc/profile
</code></pre>
<p>使更改生效:</p>
<pre><code class="language-sh">source /etc/profile
</code></pre>
<h2 id="7-清理-mysql-依赖可选">7. 清理 MySQL 依赖(可选)</h2>
<p>如果安装过程中手动安装了 <code>libaio1</code>、<code>libnuma1</code> 等库,可以手动卸载它们(<strong>如果其他程序不依赖</strong>)。</p>
<pre><code class="language-sh">sudo apt-get remove --purge libaio1 libnuma1 libncurses6 -y
sudo apt-get autoremove -y
</code></pre>
<h2 id="8-确保-mysql-已完全卸载">8. 确保 MySQL 已完全卸载</h2>
<pre><code class="language-sh">which mysql# 确保找不到 mysql
mysql --version# 应该报错
</code></pre>
<h2 id="9-注销并重新登录推荐">9. 注销并重新登录(推荐)</h2>
<p>为了确保所有环境变量更改生效,建议注销当前用户并重新登录。</p><br><br>
来源:https://www.cnblogs.com/zjw-blog/p/18731166
頁:
[1]