> 文档中心 > Linux上安装mysql

Linux上安装mysql


本人当前环境

  • 一台阿里云的服务器,CentOS 8.2 64位
  • 需要安装mysql5.7版本

下载前的检查和删除

  • 前请提醒:如果是一台新服务器或者虚拟机 ,未安装过数据库可以忽略这一步,以下操作是对已经安装了mysql数据库,的删除操作(可以是使用 rpm -qa | grep mysql 命令检查以下是否安装了mysql数据库)

1.停止数据库运行

systemctl stop mysqld # 停止数据运行如果上面的的报错,请输入下面的指令find / -name mysql.server# 从当前目录开始查找所有名称为mysql.server找到后

在这里插入图片描述

进入init.d 文件夹cd /etc/rc.d/init.d输入./mysql.server stop    #停止数据库运行如果出现报错 :./mysql.server: line 259: cd: /usr/local/mysql: No such file or directoryStarting MySQLCouldn't find MySQL server (/usr/local/mysql/[FAILED]ld_safe))那我也无能为力,如果有人遇到并解决了,希望和我说一声,我做一个记录。

2.删除已存在的数据库

rpm -qa | grep -i -E mysql\|mariadb | xargs -n1 sudo rpm -e --nodeps    #删除已有的mysql\|mariadb可以使用 rpm -qa | grep mysql  # 检查是否存在mysqlrpm -qa | grep mariadb # 检查是否存在mariadb

拓展

拓展rpm知识:-e 卸载rpm包  -q 查询已已安装的软件信息   -i 安装rpm包  -u 升级rpm包--replacepkgs 重新安装rpm包     --justdb 升级数据库,不修改文件系统--percent 在软件包安装时输出百分比  --help 帮助--version 显示版本信息  -c 显示所有配置文件  -d 显示所有文档文件-h 显示安装进度  -l 列出软件包中的文件  -a 显示出文件状态-p 查询/校验一个软件包文件  -v 显示详细的处理信息  --dump 显示基本文件信息--nomd5 不验证文件的md5支持  --nofiles 不验证软件包中的文件  --nodeps 不验证软件包的依赖关系--whatrequire 查询/验证需要一个依赖性的软件包--whatprovides 查询/验证提供一个依赖性的软件包安装参数--force即使覆盖属于其它包的文件也强制安装--nodeps如果该RPM包的安装依赖其它包,即使其它包没装,也强制安装grep知识:-n   显示行号。-i 不区分大小写。-c 统计匹配行,命中查找字符串的总行数。-v 显示不包含匹配文本的所有行。-r 递归处理。-E 使用正则表达式作为匹配进行查找(注:-e 没有-E 支持的完整)。–include 指定匹配的文件类型。–exclude 过滤不需要匹配的文件类型。xargs知识:作用是以空格或者换行作为分隔符,把标准输入转化成多个命令行参数,在与管道命令结合使用时,就能体现出 xargs 的作用

开始下载

  • 前请提醒:这里使用的yun安装如果没有需要去下载,推荐文章(https://blog.csdn.net/xTand/article/details/105710793)

1.在home目录下创建一个文件夹

cd home # 这里是在 根目录 操作 如果不在 请先到根目录 cd \mkdir install_packet   # 创建文件夹 install_packet(这是一个名称,可以随意)cd install_packet # 进入install_packet 文件夹 

2.开始安装

下载mysql5.7 rpm源和安装下载好的rpm包

wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm     # 下载mysql5.7 rpm源rpm -ivh mysql57-community-release-el7-8.noarch.rpm # 安装以下载好的rpm源

如果上面报错 :需要检查一下是否安装了 wget 和 rpm。如果没有请前往安装

安装成功/etc/yum.repos.d/目录下增加了以下四个文件(ls /etc/yum.repos.d/)

在这里插入图片描述

安装mysql

yum install -y mysql-server安装完成输入mysqld -V  # 查看当前版本

如果是使用阿里云服务器安装报错

GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

执行:

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022再次进行服务安装:yum -y install mysql-server

运行mysql

service mysqld start# 启动mysql

取得mysql初始化随机密码

grep "password" /var/log/mysqld.log  # 获取初始化密码  ppnki_%:C5?j (这个是随机的各不相同)ppnki_%:C5?j

在这里插入图片描述

登入mysql + 修改密码

mysql -u root -p     # 输入密码直接进入ALTER USER USER() IDENTIFIED BY '你的新密码'; # 修改密码(如果报错则按下面修改密码的方式)ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;  # 设置密码永不过期如果安装的为8+版本请使用这条语句:ALTER user 'root'@'localhost' IDENTIFIED BY 'root';--修改密码为rootflush privileges;    #  刷新MySQL的系统权限相关表

如果报错:

service mysqld stop  # 停止mysql运行进入my.cnf      vim etc/my.cnf# 进入my.cnf文件 (这里是在根目录操作)添加: skip-grant-tables     # 跳过数据库权限验证然后保存退出就行。

在这里插入图片描述

修改数据库的密码(这个是上面了错才执行下面的命令)

  • 进入mysql数据库前,一定要先启动 ---- service mysqld start
如果是设置了 skip-grant-tables 则直接 mysql -u root -p  然后直接回车进入进行好。flush privileges;   # 刷新一下权限grant all on cactidb.* to dbuser@'localhost' identified by '你的密码';  # 修改密码成功后在使用  flush privileges;   # 刷新一下权限exit; 退出进入 etc/my.cnf  删除之前添加的 skip-grant-tables , 然后service mysqld stop   # 停止运行mysqlservice mysqld start  # 启动mysql  然后在登入一遍mysql即可。

上面查找都没有问题 就已经安装成功mysql

开始远程连接

1.连接MySQL

mysql -u root -p 密码

在这里插入图片描述

2.查看MySQL当前远程访问权限配置

use mysql select  User,authentication_string,Host from user;

在这里插入图片描述

通过命令可以看到当前只有一个用户root,并且Host为localhost,即只能本地访问权限

3.开启远程访问权限

开启远程访问权限的方式,主要包括两种:改表法和授权法

  1. 方式一:改表法

​ 顾名思义,该方法就是直接修改更改"mysql"数据库里的"user"表里的"host"项,从"localhost"改为"%"

update user set host='%' where user='root';
  1. 方式二:授权法
    通过GRANT命令可以授予主机远程访问权限
--赋予任何主机访问权限:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;--允许指定主机(IP地址)访问权限:GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'root' WITH GRANT OPTION;

通过GRANT命令赋权后,需要通过FLUSH PRIVILEGES刷新权限表使修改生效:

FLUSH PRIVILEGES;

4.再次查看MySQL远程访问权限配置

select  User,authentication_string,Host from user;

在这里插入图片描述


注意:

出于安全性考虑,尤其是正式环境下

1.不推荐直接给root开启远程访问权限。

本案例仅以root用户作为例子做开启远程访问权限的配置,此为演示环境!

2.建议做权限细分限制

正式环境中,推荐通过创建Mysql用户并给对应的用户赋权的形式来开放远程服务权限,并指定IP地址,赋权时根据用户需求,在GRANT命令中只开放slect、update等权限,做到权限粒度最小化。

文章使用:

参考文章

MySQL开启远程访问权限-阿里云开发者社区 (aliyun.com)
Linux安装MySql5.7及配置(yum安装) - 小老弟 - 博客园 (cnblogs.com)

开发者涨薪指南 Linux上安装mysql 48位大咖的思考法则、工作方式、逻辑体系