[Linux服务器] Linux-安装MySQL(详细教程)

1099 0
Honkers 2025-3-10 21:04:51 来自手机 | 显示全部楼层 |阅读模式
<p></p>

<p></p>
<hr />
<h2>前言</h2>
<p>本文的主要内容是在 Linux 上安装 MySQL&#xff0c;以下内容是源于 B站 - MySQL数据库入门到精通 整理而来。</p>
<hr />
<h2>一、概述</h2>
<p>MySQL是一种关系型数据库管理系统&#xff0c;所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策&#xff0c;分为社区版和商业版&#xff0c;由于其体积小、速度快、总体拥有成本低&#xff0c;尤其是开放源码这一特点&#xff0c;一般中小型和大型网站的开发都选择 MySQL 作为网站数据库。</p>
<ul><li>社区版&#xff1a;免费&#xff0c;但是不提供任何技术支持</li><li>商业版&#xff1a;收费&#xff0c;可以试用30天&#xff0c;官方提供技术支持</li></ul>
<h2>二、下载</h2>
<p>官网&#xff1a;https://www.mysql.com/</p>
<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/48b916007f7f31bae632ea1f6474ce51.png" alt="在这里插入图片描述" />
<br /> 进入官网之后点击 DOWNLOADS</p>
<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/1f8cebeae353b07061f8cc1307458f0f.png" alt="在这里插入图片描述" />
<br /> 进入页面</p>
<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/7b0bb3748acc64707d0b8003a6814a49.png" alt="在这里插入图片描述" />
</p>
<p>这里选择 Downloads Archives</p>
<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/c130377daed29ed8cdea19c471898770.png" alt="在这里插入图片描述" />
<br /> 进入页面&#xff0c;选择 MySQL Community Server</p>
<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/974d171adb06684c575df99e7295e3fd.png" alt="在这里插入图片描述" />
<br /> 根据你服务器的配置选择&#xff0c;我服务器是 CentOS 7 所以 Operating System 选择 Red Hat Enterprise Linux / Oracle Linux &#xff0c;OS Version 选择 Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86,64-bit)&#xff0c;选择第一个点击 Download 下载。</p>
<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/6b6a47bbd03a16fc2e8a1b517f7afab1.png" alt="在这里插入图片描述" />
</p>
<p>----------------------------------------------------</p>
<p>以下我也提供了 MySQL 的安装包供大家使用&#xff1a;</p>
<p>网址&#xff1a;百度网盘</p>
<p>提取码&#xff1a;vf2q</p>
<p>----------------------------------------------------</p>
<h2>三、安装</h2>
<p>连上 Linux 服务器&#xff08;这里的服务器我用的是云服务器&#xff09;&#xff0c;我先创建一个 mysql 的文件夹来存放安装包。</p>
  1. # 在 /soft 目录下创建一个空的文件夹 mysql
  2. mkdir /soft/mysql
  3. # 进入这个新建的文件夹下
  4. cd /soft/mysql
复制代码

<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/1e5584c504d43973039459701566776c.png" alt="在这里插入图片描述" />
<br /> 然后上传之前下载好的 Linux 下 MySQL 的安装包&#xff0c;使用 rz 命令&#xff08;有些终端工具是可以直接上传文件的&#xff0c;比如 FinalShell&#xff09;</p>
<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/ea54cb3cacdc8637198ff80baca90a0e.png" alt="在这里插入图片描述" />
<br />
<img src="https://i-blog.csdnimg.cn/blog_migrate/c5e9c1e4e0bef1e5f339bafd6fe8b25a.png" alt="在这里插入图片描述" />
<br /> 在该目录下再创建一个文件夹&#xff0c;并且将安装包解压到该文件夹中</p>
  1. # 在当前目录下&#xff08;mysql&#xff09;下创建一个 mysql-8.0.26 文件夹
  2. mkdir mysql-8.0.26
  3. # 解压安装包到该目录下
  4. tar -xvf mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar -C mysql-8.0.26
复制代码

<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/60d87a64c287a37e58bdcc05a75d6d5e.png" alt="在这里插入图片描述" />
<br /> 解压完成之后可以切换到 mysql-8.0.26 目录下查看解压后的文件</p>
<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/a2d36c1755c2c9614035400f007aeed8.png" alt="在这里插入图片描述" />
<br /> 可以看到解压后的文件都是 rpm 文件&#xff0c;所以需要用到 rpm 包资源管理器相关的指令安装这些 rpm 的安装包</p>
<p>在安装执行 rpm 安装包之前先下载一些插件&#xff0c;因为 mysql 里面有些 rpm 的安装依赖于该插件。</p>
  1. yum install openssl-devel
  2. # 和
  3. yum -y install libaio perl net-tools
复制代码

<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/975ddf3288502ddc7c364854e5762878.png" alt="在这里插入图片描述" />
</p>
<p>安装完该插件之后&#xff0c;依次执行以下命令安装这些 rpm 包</p>
  1. rpm -ivh mysql-community-common-8.0.26-1.el7.x86_64.rpm
  2. rpm -ivh mysql-community-client-plugins-8.0.26-1.el7.x86_64.rpm
  3. rpm -ivh mysql-community-libs-8.0.26-1.el7.x86_64.rpm
  4. rpm -ivh mysql-community-libs-compat-8.0.26-1.el7.x86_64.rpm
  5. rpm -ivh  mysql-community-devel-8.0.26-1.el7.x86_64.rpm
  6. rpm -ivh mysql-community-client-8.0.26-1.el7.x86_64.rpm
  7. rpm -ivh  mysql-community-server-8.0.26-1.el7.x86_64.rpm
复制代码

<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/74d42227197bd866373cdb5e63dc301b.png" alt="在这里插入图片描述" />
</p>
<p>注意&#xff1a;安装 rpm 包时提示 依赖检测失败&#xff0c;请详见文件末尾 可能遇到的问题 寻求解决方案。</p>
<p>在 Linux 中 MySQL 安装好了之后系统会自动的注册一个服务&#xff0c;服务名称叫做 mysqld&#xff0c;所以可以通过以下命令操作 MySQL&#xff1a;</p>
<ul><li> <p>启动 MySQL 服务&#xff1a;systemctl start mysqld</p> </li><li> <p>重启 MySQL 服务&#xff1a;systemctl restart mysqld</p> </li><li> <p>关闭 MySQL 服务&#xff1a;systemctl stop mysqld</p> </li></ul>
<p>这里先启动 MySQL 服务&#xff0c;启动需要一点时间&#xff0c;耐心等待一下</p>
  1. systemctl start mysqld
复制代码

<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/c703dff23dc6aa126317af02a058d488.png" alt="在这里插入图片描述" />
</p>
<p>rpm 安装 MySQL 会自动生成一个随机密码&#xff0c;可在 /var/log/mysqld.log 这个文件中查找该密码</p>
  1. cat /var/log/mysqld.log
复制代码

<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/e6debe24f41d1bdeafadb121e6075b34.png" alt="在这里插入图片描述" />
</p>
<p>A temporay password is generated for root&#64;localhost: ****密码**** &#xff0c;这里我安装的 MySQL 生成的临时密码是&#xff1a;JAgc&#61;S-:4fGC&#xff0c;账号是 root&#xff0c;有了账号和密码之后就可以连接 MySQL 了。</p>
  1. # 连接 MySQL
  2. mysql -u root -p
复制代码

<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/c105fc201553da7ed6071c4bd487150f.png" alt="在这里插入图片描述" />
</p>
<p>到此 Linux 上安装 MySQL 基本结束。</p>
<h2>四、卸载</h2>
<p>卸载 MySQL 前需要先停止 MySQL</p>
<p>命令&#xff1a;systemctl stop mysqld</p>
<p>停止 MySQL 之后查询 MySQL 的安装文件&#xff1a;rpm -qa | grep -i mysql</p>
<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/f746f6c9e46ffd99e81a6148af168d35.png" alt="在这里插入图片描述" />
</p>
<p>卸载上述查询出来的所有的 MySQL 安装包</p>
  1. rpm -e mysql-community-client-plugins-8.0.26-1.el7.x86_64 --nodeps
  2. rpm -e mysql-community-server-8.0.26-1.el7.x86_64 --nodeps
  3. rpm -e mysql-community-common-8.0.26-1.el7.x86_64 --nodeps
  4. rpm -e mysql-community-libs-8.0.26-1.el7.x86_64 --nodeps
  5. rpm -e mysql-community-client-8.0.26-1.el7.x86_64 --nodeps
  6. rpm -e mysql-community-libs-compat-8.0.26-1.el7.x86_64 --nodeps
复制代码

<p>删除MySQL的数据存放目录</p>
  1. rm -rf /var/lib/mysql/
复制代码

<p>删除MySQL的配置文件备份</p>
  1. rm -rf /etc/my.cnf.rpmsave
复制代码

<h2>五、常用设置</h2>
<p><strong>&#xff08;1&#xff09;修改 root 用户密码</strong></p>
<p>如果你觉得 MySQL 自动生成的密码太难记忆的话&#xff0c;可以连接 MySQL 之后进行修改密码</p>
  1. ALTER  USER  &#39;root&#39;&#64;&#39;localhost&#39;  IDENTIFIED BY &#39;mike.8080&#39;;
复制代码

<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/83208986afed6b9267aa6ddd1684b4a6.png" alt="在这里插入图片描述" />
</p>
<p>这里可能会提示 Your password does not satisfy the current policy requirements&#xff0c;意思是您的密码不符合当前规定的要求&#xff0c;你要么就把你的密码设置得复杂点&#xff0c;要么就去降低密码的校验规则。</p>
<p>在 Linux 上安装 MySQL 时会自动安装一个校验密码的插件&#xff0c;默认密码检查策略要求密码必须包含&#xff1a;大小写字母、数字和特殊符号&#xff0c;并且长度不能少于8位。修改密码时新密码是否符合当前的策略&#xff0c;不满足则会提示ERROR</p>
<p>官网上能查到这个密码校验的规则&#xff0c;文档中搜索&#xff1a;validate_password</p>
<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/a24090eb3d7091591507056129efe56a.png" alt="在这里插入图片描述" />
</p>
<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/ae36f4fd50cd5e2f8d25dc1901957ec6.png" alt="在这里插入图片描述" />
<br />
<img src="https://i-blog.csdnimg.cn/blog_migrate/935fa6360eb327b9be98e58e08af865a.png" alt="在这里插入图片描述" />
</p>
<p>所以可以将这个限制密码位数设小一点&#xff0c;复杂度类型调底一点</p>
  1. # 将密码复杂度校验调整简单类型
  2. set global validate_password.policy &#61; 0;
  3. # 设置密码最少位数限制为 4 位
  4. set global validate_password.length &#61; 4;
复制代码

<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/0b5f1b62e7dd0b2c978080019297cc7c.png" alt="在这里插入图片描述" />
</p>
<p>就可以设置较为简单的密码了。</p>
<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/c3e448350cbb86ee0baa49af81ff90b8.png" alt="在这里插入图片描述" />
</p>
<p><strong>&#xff08;2&#xff09;创建用户与权限分配</strong></p>
<p>默认的 root 用户只能当前节点localhost访问&#xff0c;是无法远程访问的&#xff0c;我们还需要创建一个新的账户&#xff0c;用于远程访问</p>
<p>语法格式&#xff1a;CREATE USER &lt;用户名&gt; [ IDENTIFIED ] BY [ PASSWORD ] &lt;口令&gt;</p>
  1. # mysql 8.0 以下
  2. create user &#39;mike&#39;&#64;&#39;%&#39; IDENTIFIED BY &#39;mike8080&#39;;
  3. # mysql 8.0
  4. create user &#39;mike&#39;&#64;&#39;%&#39; IDENTIFIED WITH mysql_native_password BY &#39;mike8080&#39;;
复制代码


<p>PS: mysql8.0 的默认密码验证不再是 password 。所以在创建用户时&#xff0c;create user ‘username’&#64;‘%’ identified by ‘password’; 客户端是无法连接服务的&#xff0c;所以在创建用户的时候需要加上 WITH mysql_native_password</p>

<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/2a27476c4eb1d860e4662c7f25e8d7bb.png" alt="在这里插入图片描述" />
</p>
<p>创建完用户之后还需要给用户分配权限&#xff0c;这里我将 mike 这个用户分配了所有的权限</p>
  1. grant all on *.* to &#39;mike&#39;&#64;&#39;%&#39;;
复制代码

<p>关于用户、权限关联这块的内容可参考博客&#xff1a;MySQL 高级 | 用户、权限与角色管理</p>
<h2>六、可能遇到的问题</h2>
<p><strong>&#xff08;1&#xff09;启动 MySQL 时提示 Failed to start mysqld.service: Unit not found.</strong></p>
<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/8bd78f146ee92c5d3c05eff2324cb520.png" alt="在这里插入图片描述" />
</p>
<p>如果看到这个提示的话说明 mysql 安装失败了&#xff0c;我的建议是卸载重新安装。</p>
<p></p>
<p><strong>&#xff08;2&#xff09;安装 rpm 包时提示 依赖检测失败</strong></p>
<p>情况一&#xff1a;因 mariadb 导致依赖检测失败</p>
<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/b8018de587526946f81c59f3f1cb4cc0.png" alt="在这里插入图片描述" />
</p>
<p>解决办法&#xff1a;卸载mariadb-libs</p>
  1. rpm -e mariadb-libs --nodeps
复制代码

<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/4bb05c9d271a70ae2e80f0881e4238d4.png" alt="在这里插入图片描述" />
</p>
<p>再重新安装失败的那个 rpm 包</p>
<p>情况二&#xff1a;因 libcrypto.so.10.. 导致依赖检测失败</p>
<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/8e73e0ea79591b5355e0617efb0f4b11.png" alt="在这里插入图片描述" />
</p>
<p>显示缺少了 libcrypto.. 相关的依赖&#xff0c;而 libcrypto.. 存在于 openssl  中&#xff0c;可以通过以下命令查看 openssl 是否安装</p>
  1. openssl version
复制代码

<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/b64ed5137e921e515a0c79e53a7a3379.png" alt="在这里插入图片描述" />
</p>
<p>如果没有出现版本信息&#xff0c;则需要安装 openssl&#xff0c;命令如下&#xff1a;</p>
  1. yum install openssl
复制代码

<p>如果有版本信息&#xff0c;则查看版本是不是 OpenSSL 1.1.1&#xff0c;OpenSSL 1.1.1 有兼容性的问题&#xff0c;通过</p>
  1. ldconfig -p | grep libcrypto.so
复制代码

<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/8405de9ce5d2d4c5beede8bae2dfef0e.png" alt="在这里插入图片描述" />
<br /> 或者</p>
  1. ls -l /usr/lib64/libcrypto.so
复制代码

<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/ddc21131c1c0d7fa93f866d292038159.png" alt="在这里插入图片描述" />
</p>
<p>是能看到有 libcrypto 相关的命令的&#xff0c;只不过是 libcrypto.so.1.1 的</p>
<p>解决办法&#xff1a;compat-openssl10 提供与不支持使用 OpenSSL-1.1 编译的早期版本和软件的兼容性&#xff0c;安装 compat-openssl10</p>
  1. yum install compat-openssl10
复制代码

<p>再重新安装失败的那个 rpm 包</p>
<p><strong>&#xff08;3&#xff09;远程连接时出错</strong></p>
<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/e27176b7f4d9a8ffde67d27631bcc3a5.png" alt="在这里插入图片描述" />
</p>
<p>这个错误提示出现的可能有很多&#xff0c;我就列举几个我能想到的吧</p>
<ul><li>首先去检查你的 MySQL 是否关掉了&#xff0c;如果关了的话重启再连接</li><li>服务器上面的防火墙是否是开着的状态&#xff0c;或者 3306 的端口是否对外开放</li><li>如果你的服务器是云服务器的话&#xff0c;需要去云服务器上面开放 3306 的端口</li></ul>
<p>第一种情况我就不赘述了&#xff0c;如果你的 MySQL 是安装在虚拟机上面的话&#xff0c;简单粗暴的方式是直接关闭防火墙</p>
  1. # 关闭防火墙
  2. systemctl stop firewalld.service
  3. # 查看防火墙的状态
  4. firewall-cmd --state
  5. # 禁止firewall开机启动
  6. systemctl disable firewalld.service
复制代码

<p>或者为了安全&#xff0c;只开放特定的端口号&#xff0c;MySQL 默认端口是 3306</p>
  1. # 关闭防火墙
  2. systemctl stop firewalld.service
  3. # 3306 端口对外开放
  4. firewall-cmd --remove-port&#61;3306/tcp --permanent
  5. # 重启防火墙
  6. firewall-cmd --reload
复制代码

<p>但是&#xff0c;如果你 MySQL 并不是安装在虚拟机上的&#xff0c;而是放到云服务器上面&#xff0c;那你必须还得在云服务上面开放这几个端口</p>
<p>比方说我的 MySQL 是运行在 某某云 上面的&#xff0c;我就得做如下设置&#xff1a;</p>
<p>找到我的服务器&#xff0c;点击 更多&#xff0c;选择 管理</p>
<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/05ac9d9523ae24aefed3fb182b24b1f1.png" alt="在这里插入图片描述" />
<br /> 进入下一个页面之后&#xff0c;选择 防火墙</p>
<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/e061f783b5014755e4b1c26799c12dd0.png" alt="在这里插入图片描述" />
</p>
<p>添加 3306 端口对外开放</p>
<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/33038fd987ea45405ac7c24a26c42664.png" alt="在这里插入图片描述" />
</p>
<p>测试连接</p>
<p>
<img src="https://i-blog.csdnimg.cn/blog_migrate/15ee37d04984a8d4f4e0189dbf07c9ff.png" alt="在这里插入图片描述" />
</p>
<hr />
<p>参考博客&#xff1a;<br /> CentOS7系统安装MySQL指导手册<br /> MySQL如何创建用户<br /> MySQL创建用户&#xff08;CREATE USER&#xff09;<br /> MySQL 8.0 配置mysql_native_password身份验证插件的密码<br /> mysql给用户分配权限</p>
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行