linux CentOs 安装 mysql8.0.30

心酸历程。。。
网上的各种教程都有各种bug,安了三个小时终于安好。现在奉上我的宝典秘籍。
第一步,去mysql官网下载,然后将下载的tar包放到linux里面,最好专门创建一个目录来存放,我放到了/usr/local/src的mysql目录下了,mysql这个目录是我自己创建的。

在linux里面解压
我下载的是tar包,第一步是解压这个tar包

tar -xvf mysql-8.0.30-linux-glibc2.12-x86_64.tar

tar包解压出来就是tar.xz包

tar -xvJf mysql-8.0.23-linux-glibc2.12-x86_64.tar.xz 

给他改个名字,好看点

mv mysql-8.0.30-linux-glibc2.12-x86_64 mysql-8.0.30

在mysql-8.0.30的目录下创建data文件,用来放数据

mkdir data

分别创建用户组以及用户和密码(如果提示已存在说明之前有创建过了)

groupadd mysql
useradd -g mysql mysql

让mysql:mysql管理mysql的文件

chown -R mysql.mysql /usr/local/src/mysql/mysql-8.0.30

修改data权限,让他可以写入执行数据

chmod 750 /usr/local/src/mysql/mysql-8.0.30/data -R

配置环境变量

vim /etc/profile
export PATH=$PATH:/usr/local/src/mysql/mysql-8.0.30/bin:/usr/local/src/mysql/mysql-8.0.30/lib

这两个路径就是mysql的路径/bin,mysql路径的/lib,大家不要直接照搬啊,看着自己的mysql路径,可以在mysql包下通过pwd获取当前路径,然后复制粘贴上去。
编辑my.cnf文件

vi /etc/my.cnf

直接粘贴下面语句就行,根据自己的实际情况改动安装根目录和数据文件所在位置,其他的不需要改动。


#服务端口号 默认3306
port = 3306
# 启动mysql服务进程的用户
user = mysql
##########################################################################################################
# 安装目录相关
# mysql安装根目录
basedir = /usr/local/src/mysql/mysql8.0.30/

# mysql数据文件所在位置
datadir = /usr/local/src/mysql/mysql8.0.30/data/

# 临时目录 比如load data infile会用到,一般都是使用/tmp
tmpdir  = /tmp
#数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server = utf8mb4

#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server = utf8mb4_unicode_ci
#设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'
[client]
socket=/var/lib/mysql/mysql.sock
        

复制 mysql.server 文件,在//usr/local/src/mysql/mysql8.0.30/目录下执行

cp -a ./support-files/mysql.server /etc/init.d/mysql 
cp -a ./support-files/mysql.server /etc/init.d/mysqld

给赋值的文件赋予权限

chown 777 /etc/my.cnf
chmod +x /etc/init.d/mysql
chmod +x /etc/init.d/mysqld

检查一下/var/lib/mysql是否存在,否则进行创建,这里主要是防止连接不上mysql.sock,套接字,这里的套接字的路径和my.cnf里面的socket路径必须一样。

mkdir /var/lib/mysql 

赋予权限

chown -R mysql:mysql /var/lib/mysql/ 

初始化mysql
使用mysql的 mysqld 命令初始化数据库的基本信息。切换到mysql-5.7.18/bin目录下执行。

报错点1:注意这里还有一个问题就是我们需要用mysql用户来初始化mysql 所有我们要先从root用户变成mysql用户,要不然会报错!!!!

su mysql

命令:在/usr/local/src/mysql/mysql8.0.30/bin目录下执行

./mysqld --initialize --user=mysql --datadir=/usr/local/src/mysql/mysql8.0.30/data --basedir=/usr/local/src/mysql/mysql8.0.30 --console

该命令执行后,会生成一个临时的mysql数据库root用户的密码,请先拷贝出来记住,后续第一次登录mysql需要使用
在这里插入图片描述

报错点2,说data文件不安全或者说data文件里面存在数据,那么就把data里面的数据删掉就好了

 rm -rf /usr/local/src/mysql/mysql8.0.30/data/*

mysql-5.7.18/bin目录下执行命令:./mysqld_safe &(其中&符号表示后台启动),输入命令后按Enter。
启动数据库,有SUCCESS字眼说明MySQL安装完成

service mysql start 

ps:
如果发现启动失败,可以先查看data里面的mysql.log,如果有提示3306这样的字样,第一个想到的应该是端口被占用,
使用lsof -i:端口号,查看是哪个PID(进程号)占用了该端口,然后使用kill -9 PID(进程号)杀掉进程,重新执行service mysql start
确认msyql是否启动,查看进程 ,使用ps -ef | grep mysql
在这里插入图片描述
客户端登录mysql
登录进入mysql,bin目录下执行命令:

./mysql -uroot -p

-u表示使用root用户登录系统,使用之前生成的密码。
-p表示使用密码登录
root用户密码是临时密码,要修改才能使用。
执行sql语句 show databases; 第一次使用将会提示修改mysql的root用户密码:
在这里插入图片描述修改密码

alter user 'root'@'localhost' identified by '新密码';

授权远程访问
授权远程访问,在没有授权之前只能在本机访问msyql,远程授权就是让其他计算机通过网络访问mysql(这样远程客户端才能访问)。

CREATE USER 'root'@'%' IDENTIFIED BY '新密码';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

授权命令:grant
语法:grant all privileges on . to root@‘%’ identified by ‘yf123’;
参数:
其中*.* 的第一个表示所有数据库名,第二个表示所有的数据库表;
root@‘%’ 中的root表示用户名,%表示ip地址,%也可以指定具体的ip地址,比如root@localhost,root@192.168.235.130等。
执行授权命令:grant all privileges on . to root@‘%’ identified by ‘yf123’;

关闭防火墙:systemctl stop firewalld
在这里插入图片描述
远程连接数据库:
点开你的mysql->新建连接->测试连接

报错点3连接不上,报错

在这里插入图片描述

进入MySQL的bin目录,然后输入mysql -u root -p,输入密码,登录成功
执行SQL查询用户信息

select host,user,plugin,authentication_string from mysql.user;

可以看到他们的加密方式是caching,这个加密方法和mysql8.0.30不匹配。因此需要改变他的加密方式。
在这里插入图片描述
改变加密方式

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';

我是因为有两个root,所以我这行代码需要执行两次,并且刷新权限,才能将两个root账号的加密方式全部改过来。
刷新权限

FLUSH PRIVILEGES;

再次连接,嘿嘿,成功!
在这里插入图片描述
关闭mysql服务
bin目录下执行:
./mysqladmin -uroot -p shutdown输入密码关闭

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值