Linux中安装MySQL5.7.42

1. 首先,下载mysql5.7.42的安装包(下方是下载地址),选择红色框框的下载(注意的是,这个链接只提供5.7的版本下载,可能还会更新,不一定打开就是5.7.42的版本,后续可能会有43 ,44版本,但流程都是一样的)

2. 将压缩包上传到虚拟机上,可以使用Xshell7 配合 Xftp7 进行上传(这里不做演示)

3. 将压缩包解压

tar -xvf mysql-5.7.42-linux-glibc2.12-x86_64.tar.gz

4. 将解压后的文件目录移动到自定义的目录上(我的存放位置是/usr/local/mysql)

mv mysql-5.7.42-linux-glibc2.12-x86_64 /usr/local/mysql

5. 切换路径到local目录下

cd /usr/local/

6. 创建mysql用户组和用户并修改权限(两条命令依次执行)

groupadd mysql
useradd -r -g mysql mysql

7. 创建数据目录,并赋权限

mkdir -p /data/mysql #创建目录
chown mysql:mysql -R /data/mysql #赋予权限

8. 配置my.cnf

vim /etc/my.cnf

内容如下(将下方的内容复制进去,需要的自己按需修改):

client

default-character-set = utf8mb4

mysql

default-character-set = utf8mb4

mysqld

bind-address=0.0.0.0 #所有ip均可访问

port=3306 #端口号

user=mysql

basedir=/usr/local/mysql #mysql路径

datadir=/data/mysql #赋予权限路径

socket=/tmp/mysql.sock

log-error=/data/mysql/mysql.err

pid-file=/data/mysql/mysql.pid

#character config

character-set-client-handshake=FALSE

character-set-server=utf8mb4

collation-server=utf8mb4_unicode_ci

init_connect='SET NAMES utf8mb4'

sql_mode=only_full_group_by问题解决办法

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

symbolic-links=0

explicit_defaults_for_timestamp=true

切记!如果不是按照我的配置来弄的话,自己选择别的目录,这两个位置一定要改!

9. 初始化数据库,进入bin目录

cd /usr/local/mysql/bin/

10. 初始化

./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize

11. 查看密码

cat /data/mysql/mysql.err

执行命令后会出现上方图片的结果,把冒号后的内容复制下来,后面有用

12. 将mysql.server放置到/etc/init.d/mysql中

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

13. 启动服务,并查看服务是否正常启动

service mysql start
ps -ef|grep mysql

# 到此,mysql安装成功

14. 进入mysql(需要在/bin目录下执行命令,执行后需要输入密码,将之前复制的密码粘贴上去)

./mysql -u root -p

出现该页面,证明成功登录进去mysql

15. 开始修改密码(依次执行下方三个命令,注意,下方执行的是mysql的语法,不能把;号忽略,这是要留意的点,建议直接复制,不要手打)

SET PASSWORD = PASSWORD('123456');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
FLUSH PRIVILEGES;

出现上图的信息,证明更改成功

16. 重新测试登录

# 步骤15执行完成后,输入exit,回车退出mysql

#重新输入(/bin目录下)

./mysql -u root -p

# 使用自己设置的密码即可成功进入

17. 外部图形化软件连接虚拟机数据库

# 先登录数据库

./mysql -u root -p

# 访问mysql库

use mysql

# 使root能在任何host访问

update user set host = '%' where user = 'root';

# 刷新

FLUSH PRIVILEGES;

18. 设置MySQL开启自动启动

将服务文件拷贝到init.d下,并重命名为mysql

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
**#**赋予可执行权限

chmod +x /etc/init.d/mysqld

添加服务

chkconfig --add mysqld

显示服务列表

chkconfig --list

看到3、4、5状态为开或者为 on 则表示成功。如果是 关或者 off 则执行一下

chkconfig --level 345 mysqld on

如果外部连接失败,可能是防火墙的问题,最直接的就是把防火墙关掉

systemctl stop firewalld

这是最快捷的方法,但是有时间限制,也可以开机就禁用

systemctl disable firewalld.service

目前我用的是开放端口的方式,开放端口其实比较贴合实际,如果你用云服务器,显然完全关闭防火墙不是那么好,可以使用开放端口的方式

firewall-cmd --zone=public --add-port=80/tcp --permanent # 开放80端口 (按需替换端口号就行)

firewall-cmd --zone=public --remove-port=80/tcp --permanent #关闭80端口

firewall-cmd --reload # 配置立即生效

查看防火墙所有开放的端口

firewall-cmd --zone=public --list-ports

相关推荐
华普微HOPERF1 小时前
Matter协议,如何塑造更宜居、流畅的智能家居网络?
服务器·网络·智能家居
初学者_xuan2 小时前
零基础新手小白快速了解掌握服务集群与自动化运维(十五)Redis模块-Redis数据库基础
运维·数据库·自动化
默 语2 小时前
MySQL中的数据去重,该用DISTINCT还是GROUP BY?
java·数据库·mysql·distinct·group by·1024程序员节·数据去重
爱隐身的官人2 小时前
Windows配置解压版MySQL5(免安装)
windows·mysql
wdfk_prog3 小时前
[Linux]学习笔记系列 -- [kernel][time]alarmtimer
linux·笔记·学习
小志biubiu3 小时前
【Linux】Ext系列文件系统
linux·服务器·c语言·经验分享·笔记·ubuntu·操作系统
ha20428941943 小时前
Linux操作系统学习之---基于环形队列的生产者消费者模型(毛坯版)
linux·c++·学习
DooTask官方号3 小时前
DooTask 1.3.38 版本更新:MCP 服务器与 AI 工具深度融合,开启任务管理新体验
运维·服务器·人工智能·开源软件·dootask
wanhengidc5 小时前
云手机适配用户有哪些?
服务器·arm开发·安全·智能手机·玩游戏
南林yan5 小时前
Debian、Ubuntu、CentOS:Linux 三大发行版的核心区别
linux·ubuntu·debian·linux内核