【linux安装mysql8.0】

本文详细介绍了如何在Linux系统中卸载MariaDB和MySQL,包括检查安装状态、删除相关文件和配置。接着,文章提供了MySQL的安装步骤,包括上传、解压、创建用户组和用户、初始化数据库以及配置my.cnf文件。此外,还讲解了如何开放Linux防火墙的3306端口,以及如何处理登录MySQL的相关问题,如修改root密码和允许远程访问。
摘要由CSDN通过智能技术生成

一、卸载mariadb

1、检查Linux是否安装了mariadb数据库

mariadb数据库是mysql的分支,为避免安装mysql时产生冲突,需提前卸载mariadb

yum list installed | grep mariadb

无结果说明未安装,否无需要全部删除

2、全部卸载

yum -y remove mariadb*

3、检查mariadb是否全部卸载

yum list installed | grep mariadb

二、卸载之前安装的mysql

rpm -qa|grep -i mysql

无结果,说明之前未安装

1、查找是否存在mysql文件夹

find / -name *mysql*

2、检查之前安装的mysql目录并删除mysql文件和库

如果存在mysql文件夹,则需要进行删除

rm -rf /文件夹名

3、卸载后手动删除/etc/my.cnf

rm -rf /etc/my.cnf

三、安装并配置MySQL

1、将下载好的MySQL上传到Linux系统

云盘连接放这里了,有需要的小伙伴可以自取
链接:https://pan.baidu.com/s/1NEQ7E5hE7tpXP_-3Ff1p4Q
提取码:5k0q

2、解压mysql

tar -xf mysql-8.0.30-el7-x86_64.tar.gz

3、重命名文件夹

mv mysql-8.0.30-el7-x86_64 /usr/local/mysql8.0.30

这里的mv指令,实现了移动和重命名的功能,如果/usr/local没有目标目录,则会自动创建

4、创建用户组及用户和密码

groupadd mysql
useradd  -g mysql mysql

为什么要创建mysql分组: 我们在编译安装的时候创建一个mysql组和一个mysql用户,并把datadir和安装目录属主改为mysql,在MySQL启动的时候,单进程mysqld,该进程的属主就是mysql,这样就保证了mysql服务的独立性,即便mysql服务被黑掉,得到了mysql用户权限,也不会影响整个系统的安全

5、授权用户

chown -R mysql:mysql mysql-8.0.30/

这里的-R参数意思是将mysql-8.0.30目录下所有的文件的所有者都更改为mysql

6、切换到bin目录下,初始化基本信息得到临时密码

cd /usr/local/mysql-8.0.30/bin

在/usr/local/mysql-8.0.30目录下创建data文件夹并将所有者改为mysql

mkdir data
chown -R mysql:mysql data
chmod 777 data/
 ./mysqld --user=mysql --basedir=/usr/local/mysql-8.0.30 --datadir=/usr/local/mysql-8.0.30/data/ --initialize

执行成功后,会得到一个临时密码,如下图所示
在这里插入图片描述

7、编辑配置文件/etc/my.cnf

vim /etc/my.cnf
[mysql]
#MySQL 提示符配置
 
#用户名@主机名+数据库名
#prompt="\\u@\\h [\\d]>"
 
#用户名@主机名+mysql版本号+数据库名
prompt=\\u@\\h \\v [\\d]>\\_
 
#用户名@主机名+当前时间+mysql版本号+数据库名
#prompt="(\\u@\\h) \\R:\\m:\\s \\v [\\d] \n>"
 
[mysqld]
#mysql安装根目录
basedir = /usr/local/mysql-8.0.30/
 
#mysql数据文件所在位置
datadir = /usr/local/mysql/mysql-8.0.30/data/
 
#设置socke文件所在目录
socket = /tmp/mysql.sock
 
#数据库默认字符集, 主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server = utf8mb4
 
#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server = utf8mb4_general_ci
 
#设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'

8、添加mysql服务到系统

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

添加mysql到服务及设置为开机自动启动

chkconfig --add mysql  #添加服务mysql
chkconfig mysql on     #设置mysql服务为自启动
chkconfig --list  #检查是否设置开机启动成功

-a 参数表示权限等属性一致复制
/etc/init.d下存放的是一些服务的启动脚本,添加后可以使用service mysql start来对服务进行启动1、init.d 目录中存放的是一系列系统服务的管理(启动与停止)脚本。
2、用service命令可执行init.d目录中相应服务的脚本。
例:执行命令“service resin start”,可启动/etc/init.d/resin脚本
3、/etc/init.d是指向/etc/rc.d/init.d的软连接

10、启动mysql及查看状态

service mysql start
service mysql status

在启动的过程中,如果报错Starting MySQL… ERROR! The server quit without updating PID file (/usr/local/mysql-8.0.30/data//localhost.localdomain.pid),则需要查看配置文件中所用到的文件的(如tmp)权限;具体原因可查看localhost.localdomain.err文件中进行查看

11、将mysql指令添加到指令系统并登录

在根目录下如果直接输入mysql -uroot -p,则会提示未找到指令,需要到mysql安装目录下的bin目录中执行,但是每次都这样就比较麻烦,所以可以把mysql指令添加到系统,这样就可以实现在任意目录下执行该指令

ln -s /usr/local/mysql-8.0.30/bin/mysql /usr/bin/
mysql -uroot -p
Enter password: #输入之前生成的随机密码

12、修改root密码

登录成功后,可以执行如下指令,进行修改密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;

如果忘记密码或者密码不生效都可进行如下操作(这种情况只有在忘记root密码 不得已重启数据库的情况下使用的。现网环境慎用,需要重启数据库,并且安全性也比较难以保证)

[root@localhost /]# mysql -uroot -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
service mysql stop # 停止mysql服务
service mysql start --skip-grant-tables # 启动mysql并关闭验证功能
mysql -uroot -p #输入该指令后,连续输入两次回车

此时如果直接去进行修改密令则会报错

root@localhost 8.0.30 [mysql]> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

这是因为我们在启动的时候跳跃权限表的限制(直接翻译的,深层原因笔者也不知道,欢迎知道的大佬补充)
需要先执行flush privileges,然后再执行修改密码的指令就可以了,修改完立刻生效的话,需要在执行下flush privileges指令

13、退出mysql

exit

三、Linux虚拟机防火墙开放3306端口

1、查看3306端口开放状态并打开

firewall-cmd --list-ports
firewall-cmd --zone=public --add-port=3306/tcp --permanent  ···

2、防火墙重载

systemctl restart firewalldfirewall-cmd --reload

3、检验是否开放成功

firewall-cmd --list-ports

四、登录MySQL

mysql安装好,服务启动后,直接用连接工具连接,一般会报错
在这里插入图片描述
改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从"localhost"改称"%"

mysql -u root -p
mysql>use mysql;
mysql>update user set host = '%'  where user = 'root';
mysql>select host, user from user;
mysql>flush privileges;

再次连接就可以了
在这里插入图片描述
总结:至此,mysql在linux服务器上就安装好了,小伙伴有补充的地方欢迎在评论区留言补充

版权声明:本文为CSDN博主「程序前行者」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_62808124/article/details/126436925

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值