Linux-安装MySQL(详细教程)_linux安装mysql-程序员宅基地

技术标签: 安装教程  linux  mysql  数据库  


前言

本文的主要内容是在 Linux 上安装 MySQL,以下内容是源于 B站 - MySQL数据库入门到精通 整理而来。


一、概述

MySQL是一种关系型数据库管理系统,所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL 作为网站数据库。

  • 社区版:免费,但是不提供任何技术支持
  • 商业版:收费,可以试用30天,官方提供技术支持

二、下载

官网:https://www.mysql.com/

在这里插入图片描述
进入官网之后点击 DOWNLOADS

在这里插入图片描述
进入页面

在这里插入图片描述

这里选择 Downloads Archives

在这里插入图片描述
进入页面,选择 MySQL Community Server

在这里插入图片描述
根据你服务器的配置选择,我服务器是 CentOS 7 所以 Operating System 选择 Red Hat Enterprise Linux / Oracle Linux ,OS Version 选择 Red Hat Enterprise Linux 7 / Oracle Linux 7 (x86,64-bit),选择第一个点击 Download 下载。

在这里插入图片描述

----------------------------------------------------

以下我也提供了 MySQL 的安装包供大家使用:

网址:百度网盘

提取码:vf2q

----------------------------------------------------

三、安装

连上 Linux 服务器(这里的服务器我用的是云服务器),我先创建一个 mysql 的文件夹来存放安装包。

# 在 /soft 目录下创建一个空的文件夹 mysql
mkdir /soft/mysql
# 进入这个新建的文件夹下
cd /soft/mysql

在这里插入图片描述
然后上传之前下载好的 Linux 下 MySQL 的安装包,使用 rz 命令(有些终端工具是可以直接上传文件的,比如 FinalShell)

在这里插入图片描述
在这里插入图片描述
在该目录下再创建一个文件夹,并且将安装包解压到该文件夹中

# 在当前目录下(mysql)下创建一个 mysql-8.0.26 文件夹
mkdir mysql-8.0.26
# 解压安装包到该目录下
tar -xvf mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar -C mysql-8.0.26

在这里插入图片描述
解压完成之后可以切换到 mysql-8.0.26 目录下查看解压后的文件

在这里插入图片描述
可以看到解压后的文件都是 rpm 文件,所以需要用到 rpm 包资源管理器相关的指令安装这些 rpm 的安装包

在安装执行 rpm 安装包之前先下载一些插件,因为 mysql 里面有些 rpm 的安装依赖于该插件。

yum install openssl-devel
# 和
yum -y install libaio perl net-tools

在这里插入图片描述

安装完该插件之后,依次执行以下命令安装这些 rpm 包

rpm -ivh mysql-community-common-8.0.26-1.el7.x86_64.rpm 

rpm -ivh mysql-community-client-plugins-8.0.26-1.el7.x86_64.rpm 

rpm -ivh mysql-community-libs-8.0.26-1.el7.x86_64.rpm

rpm -ivh mysql-community-libs-compat-8.0.26-1.el7.x86_64.rpm

rpm -ivh  mysql-community-devel-8.0.26-1.el7.x86_64.rpm

rpm -ivh mysql-community-client-8.0.26-1.el7.x86_64.rpm

rpm -ivh  mysql-community-server-8.0.26-1.el7.x86_64.rpm

在这里插入图片描述

注意:安装 rpm 包时提示 依赖检测失败,请详见文件末尾 可能遇到的问题 寻求解决方案。

在 Linux 中 MySQL 安装好了之后系统会自动的注册一个服务,服务名称叫做 mysqld,所以可以通过以下命令操作 MySQL:

  • 启动 MySQL 服务:systemctl start mysqld

  • 重启 MySQL 服务:systemctl restart mysqld

  • 关闭 MySQL 服务:systemctl stop mysqld

这里先启动 MySQL 服务,启动需要一点时间,耐心等待一下

systemctl start mysqld

在这里插入图片描述

rpm 安装 MySQL 会自动生成一个随机密码,可在 /var/log/mysqld.log 这个文件中查找该密码

cat /var/log/mysqld.log

在这里插入图片描述

A temporay password is generated for root@localhost: ****密码**** ,这里我安装的 MySQL 生成的临时密码是:JAgc=S-:4fGC,账号是 root,有了账号和密码之后就可以连接 MySQL 了。

# 连接 MySQL 
mysql -u root -p

在这里插入图片描述

到此 Linux 上安装 MySQL 基本结束。

四、卸载

卸载 MySQL 前需要先停止 MySQL

命令:systemctl stop mysqld

停止 MySQL 之后查询 MySQL 的安装文件:rpm -qa | grep -i mysql

在这里插入图片描述

卸载上述查询出来的所有的 MySQL 安装包

rpm -e mysql-community-client-plugins-8.0.26-1.el7.x86_64 --nodeps

rpm -e mysql-community-server-8.0.26-1.el7.x86_64 --nodeps

rpm -e mysql-community-common-8.0.26-1.el7.x86_64 --nodeps

rpm -e mysql-community-libs-8.0.26-1.el7.x86_64 --nodeps

rpm -e mysql-community-client-8.0.26-1.el7.x86_64 --nodeps

rpm -e mysql-community-libs-compat-8.0.26-1.el7.x86_64 --nodeps

删除MySQL的数据存放目录

rm -rf /var/lib/mysql/

删除MySQL的配置文件备份

rm -rf /etc/my.cnf.rpmsave

五、常用设置

(1)修改 root 用户密码

如果你觉得 MySQL 自动生成的密码太难记忆的话,可以连接 MySQL 之后进行修改密码

ALTER  USER  'root'@'localhost'  IDENTIFIED BY 'mike.8080';

在这里插入图片描述

这里可能会提示 Your password does not satisfy the current policy requirements,意思是您的密码不符合当前规定的要求,你要么就把你的密码设置得复杂点,要么就去降低密码的校验规则。

在 Linux 上安装 MySQL 时会自动安装一个校验密码的插件,默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。修改密码时新密码是否符合当前的策略,不满足则会提示ERROR

官网上能查到这个密码校验的规则,文档中搜索:validate_password

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

所以可以将这个限制密码位数设小一点,复杂度类型调底一点

# 将密码复杂度校验调整简单类型
set global validate_password.policy = 0;
# 设置密码最少位数限制为 4 位
set global validate_password.length = 4;

在这里插入图片描述

就可以设置较为简单的密码了。

在这里插入图片描述

(2)创建用户与权限分配

默认的 root 用户只能当前节点localhost访问,是无法远程访问的,我们还需要创建一个新的账户,用于远程访问

语法格式:CREATE USER <用户名> [ IDENTIFIED ] BY [ PASSWORD ] <口令>

# mysql 8.0 以下
create user 'mike'@'%' IDENTIFIED BY 'mike8080';
# mysql 8.0
create user 'mike'@'%' IDENTIFIED WITH mysql_native_password BY 'mike8080';

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

在这里插入图片描述

创建完用户之后还需要给用户分配权限,这里我将 mike 这个用户分配了所有的权限

grant all on *.* to 'mike'@'%';

如果你想权限分配得更细一点可参考博客:mysql给用户分配权限

六、可能遇到的问题

(1)启动 MySQL 时提示 Failed to start mysqld.service: Unit not found.

在这里插入图片描述

如果看到这个提示的话说明 mysql 安装失败了,我的建议是卸载重新安装。

(2)安装 rpm 包时提示 依赖检测失败

情况一:因 mariadb 导致依赖检测失败

在这里插入图片描述

解决办法:卸载mariadb-libs

rpm -e mariadb-libs --nodeps

在这里插入图片描述

再重新安装失败的那个 rpm 包

情况二:因 libcrypto.so.10.. 导致依赖检测失败

在这里插入图片描述

显示缺少了 libcrypto.. 相关的依赖,而 libcrypto.. 存在于 openssl 中,可以通过以下命令查看 openssl 是否安装

openssl version

在这里插入图片描述

如果没有出现版本信息,则需要安装 openssl,命令如下:

yum install openssl

如果有版本信息,则查看版本是不是 OpenSSL 1.1.1OpenSSL 1.1.1 有兼容性的问题,通过

ldconfig -p | grep libcrypto.so

在这里插入图片描述
或者

ls -l /usr/lib64/libcrypto.so

在这里插入图片描述

是能看到有 libcrypto 相关的命令的,只不过是 libcrypto.so.1.1

解决办法:compat-openssl10 提供与不支持使用 OpenSSL-1.1 编译的早期版本和软件的兼容性,安装 compat-openssl10

yum install compat-openssl10

再重新安装失败的那个 rpm 包

(3)远程连接时出错

在这里插入图片描述

这个错误提示出现的可能有很多,我就列举几个我能想到的吧

  • 首先去检查你的 MySQL 是否关掉了,如果关了的话重启再连接
  • 服务器上面的防火墙是否是开着的状态,或者 3306 的端口是否对外开放
  • 如果你的服务器是云服务器的话,需要去云服务器上面开放 3306 的端口

第一种情况我就不赘述了,如果你的 MySQL 是安装在虚拟机上面的话,简单粗暴的方式是直接关闭防火墙

# 关闭防火墙
systemctl stop firewalld.service 
# 查看防火墙的状态
firewall-cmd --state 
# 禁止firewall开机启动
systemctl disable firewalld.service

或者为了安全,只开放特定的端口号,MySQL 默认端口是 3306

# 关闭防火墙
systemctl stop firewalld.service 
# 3306 端口对外开放
firewall-cmd --remove-port=3306/tcp --permanent 
# 重启防火墙
firewall-cmd --reload

但是,如果你 MySQL 并不是安装在虚拟机上的,而是放到云服务器上面,那你必须还得在云服务上面开放这几个端口

比方说我的 MySQL 是运行在 某某云 上面的,我就得做如下设置:

找到我的服务器,点击 更多,选择 管理

在这里插入图片描述
进入下一个页面之后,选择 防火墙

在这里插入图片描述

添加 3306 端口对外开放

在这里插入图片描述

测试连接

在这里插入图片描述


参考博客:
CentOS7系统安装MySQL指导手册
MySQL如何创建用户
MySQL创建用户(CREATE USER)
MySQL 8.0 配置mysql_native_password身份验证插件的密码
mysql给用户分配权限

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xhmico/article/details/125197747

智能推荐

跑DeepInf模型时候的bug:train.py: error: the following arguments are required: --file_dir_the following arguments are required: --file-dir-程序员宅基地

文章浏览阅读4.3k次,点赞4次,收藏6次。%run train.pyusage: train.py [-h] [--verbosity VERBOSITY] [--tensorboard-log TENSORBOARD_LOG] [--model MODEL] [--no-cuda] [--seed SEED] [--epochs EPOCHS] [--lr LR] ..._the following arguments are required: --file-dir

JavaScript高级程序设计第五章引用类型——RegExp类型_该类未实现此属性-程序员宅基地

文章浏览阅读196次。ECMAScript通过RegExp类型来支持正则表达式。var expression = / pattern / flags ;//pattern模式 flags 标志其中的模式(pattern)部分可以是任何简单或复杂的正则表达式,可以包含字符串,限定符,分组,向前查找以及反向引用。每个正则表达式都可带有一个或多个标志(flags),用以标明正则表达式的行为。正则表达式的匹配模式支持下列3个..._该类未实现此属性

echarts 生成 迁徙图_百度地图+echarts(迁徙图)-程序员宅基地

文章浏览阅读1.4k次。let minigrateChart = echarts.init(document.getElementById("MinigrateChart"));let geoCoordMap = {'上海': [121.4648,31.2891],'东莞': [113.8953,22.901],'东营': [118.7073,37.5513],'中山': [113.4229,22.478],'临汾': ..._echarts 百度 迁徙图 源码

《计算机工程》投稿经验_计算机工程投稿经验-程序员宅基地

文章浏览阅读6.1k次,点赞11次,收藏22次。《计算机工程》投稿经验_计算机工程投稿经验

plist创建方法_构建plist-程序员宅基地

文章浏览阅读361次。_构建plist

loader_utils.py + word2Vec补充学习_loader-utils-程序员宅基地

文章浏览阅读295次。2021SC@SDUSC_loader-utils

随便推点

CodeForces 82A Double Cola 【math】-程序员宅基地

文章浏览阅读302次。A. Double Cola time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output Sheldon, Leonard, Penny, Rajesh and Howard are in the queue for a “Double C..._codeforces 82a

开源社区应该选择什么语言?-程序员宅基地

文章浏览阅读195次。点击上方“开源社”关注我们| 作者:庄表伟|编辑:李明康| 设计:王福政前传《在开源的世界里,应该讲开发者都能懂的语言!》(https://my.oschina.net/oscpyaqx..._未来社区开发语言

kali-程序员宅基地

文章浏览阅读566次。1.更新软件源:修改sources.list文件:leafpad /etc/apt/sources.list然后选择添加以下适合自己较快的源(可自由选择,不一定要全部):#官方源deb http://http.kali.org/kali kali main non-free contribdeb-src http://http.kali.org/kali kali main non-f...

【ROS】自定义消息类型_customize_msgs-程序员宅基地

文章浏览阅读1k次,点赞2次,收藏13次。文章目录一、自定义msg文件1、创建工作空间与功能包2、自定义msg文件3、修改CMakeLists.txt4、修改xml5、编译二、自定义msg文件的使用1、新建pkg2、新建publisher3、修改CMakeLists.txt4、编译三、运行一、自定义msg文件工程中由于自定义的msg或srv比较多,通常会单独把自定义的内容放入一个pkg。本节我们新建一个叫public_pkg的pkg。1、创建工作空间与功能包mkdir -p catkin_ws1/srccd catkin_ws1/sr_customize_msgs

3分钟看懂gcc、arm-Linux-gcc和arm-elf-gcc的组成及区别_gcc和arm生成的elf区别-程序员宅基地

文章浏览阅读2.3k次。一、GCC简介The GNU Compiler Collection,通常简称 GCC,是一套由 GNU 开发的编译器集,为什么是编辑器集而不是编译器呢?那是因为它不仅支持 C 语言编译,还支持 C++, Ada,Objective C 等许多语言。另外 GCC 对硬件平台的支持,可以所无所不在,它不仅支持 X86处理器架构, 还支持 ARM, Motorola 68000, Motorola 8..._gcc和arm生成的elf区别

xmpp 消息监听_xmpp 群聊 监听-程序员宅基地

文章浏览阅读1.6k次。1.聊天信息监听chatManager = ChatManager.getInstanceFor(mConnection);chatManager.addIncomingListener(new IncomingChatMessageListener() { @Override public void newIncomingMessage(EntityBareJid m_xmpp 群聊 监听

推荐文章

热门文章

相关标签