MySQL高级篇之Linux下的Mysql安装

本文介绍了在Linux系统中安装MySQL数据库的详细步骤,包括下载特定版本的MySQL包,解决安装过程中的依赖问题,初始化数据库并设置密码。同时,文章还涉及了使用Sqlyog进行远程连接的配置,包括处理防火墙和端口开放的问题,以及解决连接报错的解决方案。
摘要由CSDN通过智能技术生成


前言

这篇文章是在跟着b站尚硅谷的数据库视频学习后写的,仅仅是为了记录一下学习过程中遇到的报错等,如果有问题请指正!

准备工作

Linux系统及工具的准备(数据库高级篇一般在Linux操作系统学习之后,所以以下部分内容不做详细说明)

  • 下载安装VMware以及相关linux系统(Centos7、Ubuntu等)
  • 虚拟机的安装自行搜索,我当时参考的是这篇博主的文章VMware虚拟机安装Linux教程(超详细)
    - 至于视频中讲到的虚拟机克隆的操作,暂时不做要求,因为老师是为了演示Mysql8.0和Mysql5.7部分功能特性的不同;况且克隆多个虚拟机可能对电脑配置也有要求
  • 安装Xshell和Xftp等访问Centos系统的工具
  • Xshell是一个可以在windows界面下访问远端不同系统下的服务器,达到远程控制终端的目的。如果你觉得在虚拟机下直接操作更方便就可以不用安装,也是不做硬性要求
  • Xftp是可以让用户在windows和linux不同的操作系统之间进行文件的传输的工具,可能会用到,以下是我在安装过程中遇到一些问题

1、 虚拟机的ip地址查询(Xftp连接以及后续Sqlyog连接时使用):

  • 在虚拟机中打开终端,输入ip addr
  • 如果查看ens33的内容后发现没有inet这个属性,就需要进行网卡配置(我这个因为是后来截的,所以有) ip信息
  • 在命令框输入 vim /etc/sysconfig/network-scripts/ifcfg-ens33ifcfg-ens33
  • 从配置清单中发现Centos7默认不启动网卡(ONBOOT=no,我这个也是后来截的),直接修改为yes。(按i进入编辑模式esc停止编辑模式:wq退出编辑
    如果修改不了可能是权限问题,用sudo+上述命令(vim/..)再试试
  • 再在命令窗口输入service network restart重启服务;接着再次输入ip addr,就能看到ip(不包括/24
    ip信息

2、Xftp连接后可能在Linux的部分有乱码

  • 点击齿轮状的图形 设置编码格式为uft-8
    编码格式修改

3、Xftp在使用过程中可能的报错 :xftp上传文件错误,permission is not allowed

  • 在传输文件时,可能会遇到这个报错,这是因为对要传输到的linux文件夹操作权限不够,修改对应文件夹权限即可chmod 777 文件夹名称

Mysql的下载安装

  1. Mysql的下载
  • 点击DOWNLOADS选择MYSQL Community(GPL) Downloads
    Mysql社区版本下载Mysql社区版本下载
  • 选择对应Linux的版本(Centos对应选择Red Hat就行,下面的选项要对应自己的Linux系统格式Mysql版本选择
  • 下载时间较长,等待片刻:
    解压后的文件不用全部使用Xftp传到Linux上,只需要这6个包就好(版本可能不同,根据前缀挑选)(如果传输失败也可能是权限问题,chmod
    选择的解压包
  1. Mysql的安装
  • 以备不测,建议在root的权限下进行:su
    再输入密码就可以从普通用户转到root用户,如果出现’‘su:鉴定故障’'的报错,确定不是记错密码的情况下,多输几遍就行(可能是大小写的问题)。
  • 检查Mysql的依赖rpm -qa|grep libaorpm -qa|grep net -tools,没有就会报错,有的话就会显示存在(一般这里不会有问题,只要你虚拟机安装好了)
    依赖查询
  1. 安装(有安装的先后顺序

rpm -ivh mysql-community-common-8.0.33-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.33-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.33-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.33-1.el7.x86_64.rpm
rpm -ivh mysql-community-icu-data-files-8.0.33-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.33-1.el7.x86_64.rpm

其中安装到第三步时,会报这样一个错误报错
Mysql在被Orcle收购后,为了防止他们将Mysql闭源,做了这样一个措施
yum remove mysql-libs,删除掉原来的依赖即可

  1. 查看Mysql版本 mysql --version以及Mysql安装的内容rpm -qa|grep -i mysql 查看信息

  2. 为了保证数据库目录和文件的所有者是mysql登录目录,需要执行下面的命令进行初始化mysqld --initialize --user=mysql

  • 查看密码查看密码

  • 查看服务是否启动systemctl status mysqld
    查看服务是否启动

  • 启动服务systemctl start mysqld
    启动Mysql

  • 查看Mysql服务是否是自启动systemctl list-unit-files|grep mysqld.service (默认自启动)自启动

  • 登录数据库登录数据库

  • 查看数据库中的表show databases;在未改修改密码前会报错

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

  • 修改密码alter user 'root'@'localhost' identified by '密码'

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

报错的原因可能是安装了密码校验插件,不符合其中的规定。我们可以修改密码,也可以修改规定,更可以删除插件(因人而异)

  • 如果密码修改成功另当别论。但如果你觉得你密码比较简单并且也没有提示,而且查看密码策略也是空表,别慌,可能就是没有安装插件,插件安装也简单INSTALL PLUGIN validate_password SONAME 'validate_password.so';

安装完后查看Mysql的密码策略

mysql> SHOW VARIABLES LIKE ‘validate_password%’;
±-------------------------------------±-------+
| Variable_name | Value |
±-------------------------------------±-------+
| validate_password_check_user_name | OFF | 决定是否使用该插件(及强制/永久强制使用):ON/OFF/FORCE/FORCE_PLUS_PERMANENT
| validate_password_dictionary_file | | 插件用于验证密码强度的字典文件路径
| validate_password_length | 8 | 密码最小长度
| validate_password_mixed_case_count | 1 | 密码至少要包含的小写字母个数和大写字母个数
| validate_password_number_count | 1 | 密码至少要包含的数字个数
| validate_password_policy | MEDIUM | 密码强度检查等级,0/LOW、1/MEDIUM、2/STRONG
| validate_password_special_char_count | 1 | 密码至少要包含的特殊字符数
±-------------------------------------±-------+
7 rows in set (0.02 sec)
0/LOW:只检查长度。
1/MEDIUM:检查长度、数字、大小写、特殊字符。
2/STRONG:检查长度、数字、大小写、特殊字符字典文件。

  • 接着登录就能看到其中的表数据表

Sqlyog与Linux数据库的连接

  • Address、(数据库的)用户名和密码都是虚拟机上对应的内容
  • 直接连接会报错(Mysql配置了不支持远程连接,以及各系统的防火墙引起的)
    报错
  • 确认网络
    在远程机器上使用ping ip 保证网络畅通(这步一般不会有报错)
    确认网络
    在远程机器上使用telent 保证端口号开放访问(这步问题很多)
    有两种开启端口的方法
  • 控制面板里找到程序与功能,在其左侧的打开或关闭Windows功能里找到Telnet服务端并开启
    开启Telnet服务端
  • 管理员命令行里运行: dism /online /Enable-Feature /FeatureName:TelnetClient
    🔺管理员命令行打开方式:win+r -> cmd -> ctrl+shift+enter
    1、在我自己采用这两种方法时,都会报错。前者报 “出现错误,并非所有的功能被更改”,就是并不像一些博主分享的办法中需要下载Telnet相关功能,直接就是修改不了;
    2、然后我使用后者,结果依旧不行,具体报错我忘记截图了,就是下载到最后是让你去C:\Windows\Logs\DISM\dism.log查看具体错误。然后我找到了文件,里面内容很多,根据时间以及ERROR找到对应的几行,查看其中的错误代码是0x80070057。然后拿朋友的电脑开始却可以,再想到我windows有部分功能一直更新失败,所以我猜想可能与这有关。(一般多是其他的解决办法,用管理员权限等等)
    3、win10更新失败(解决方案)这个问题之前困扰了我许久,一直没解决,结果这次顺带着解决了,并且Telnet服务端也能打开(打开方式照旧,就是更新的时间太长,我在晚上更的)
  • 关闭系统的防火墙
  • Win10打开控制面板,右上角有个Windows Defender防火墙,点进去关闭就可以(可能有风险)所以后来我找到了Windows10下修改防火墙设置对单独的ip接口进行了放行关闭防火墙
  • Linux下的防火墙修改
    systemctl status firewalld查看防火墙状态
    systemctl stop firewalld关闭防火墙
    systemctl disable firewalld将防火墙设为开机不自启动关闭linux的防火墙
    🔺linux由于是安在虚拟机上,所以关闭防火墙其实无伤大雅,但为了安全还是采用另一种方法。
  • su转换到root用户下,firewall-cmd --list-all查看开放的端口号
  • 接着添加3306端口号 firewall-cmd --zone=public --add-port=3306/tcp --permanent
  • 添加后刷新firewall-cmd --reload
  • 再次查看开放的端口号,firewall-cmd --list-all,发现添加成功,sqlyog也可以连接上。
    开放指定端口号
  • 修改linux数据库
  • 关闭防火墙后仍不能连接成功,在linux下登录数据库mysql -uroot -hlocalhost -p输入密码后, show databases;打开其中的mysql表数据表
  • 切换到mysql下在use mysql;,再显示其中的内容select host,user from user;mysql表内数据
  • 修改root对应的hostupdate user set host = '%' where user = 'root';%通配符,这个ip格式因人而异,但最好选择%,我这个会影响在linux下登录数据库(属于错误示范,也是后来发现的)。
    在这里插入图片描述
  • 最后要刷新一下服务flush privileges;
    🔺不出意外,以上命令执行成功后的返回语句大多是Query OK, 0 rows affected (0.00 sec)(仅供参考)
  • 之后就可以连接成功了
    连接成功

总结

第一次记录笔记,篇幅也挺长,之前想着挺简单,感觉花不了多长时间,但做起来还是很费时费力的。在这里要感谢在文中出现的文章的所属作者,感谢他们的文章(引用已经过同意),不然我解决不了问题,更不会有这篇笔记!!!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值