linux安装mysql8.x记录

注意: 第一种方式中途发现不能用, 启动时会提示: Failed to start mysqld.service: Unit not found.  原因: 在CentOS7中已经不在推荐使用mysql,甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险。使用各种方法无果后,采用了第二种方法,然后就行了

若第二种方法也不管用,则用第三种方法

第一种方法:

参考链接: linux下安装mysql8.0.x步骤 - 吊儿郎当小少年 - 博客园

操作系统 centos 7.9 x64

工具: xshell6, xftp6

1.下载mysql

mysql官网:https://dev.mysql.com/downloads/mysql/

有两种下载方式

第一种是下载到本地,然后用xftp6上传至指定目录

第二种是使用wget命令

先指定一个目录:

cd /usr/local

 这里使用wget命令:

wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.28-el7-x86_64.tar.gz

 

 2.解压并重命名

tar -zxvf mysql-8.0.28-el7-x86_64.tar.gz

重命名解压后的文件夹

mv mysql-8.0.18-el7-x86_64/ mysql

3.创建data目录 

进入mysql目录

cd /usr/local/mysql/

创建data目录,存放数据

mkdir data

4.创建mysql用户组和mysql用户

groupadd mysql
useradd -g mysql mysql

5.改变mysql目录权限

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

6.初始化数据库

bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql 
--datadir=/usr/local/mysql/data

若报错:

bin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory

则说明没安装numactl

yum -y install numactl

参考链接: ./mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No suc_心心念念@的博客-CSDN博客

7.配置mysql

在mysql/support-files创建文件my-default.cnf

cd /usr/local/mysql/support-files/
touch my-default.cnf

复制配置文件到/etc/my.cnf

cp -a ./my-default.cnf /etc/my.cnf 

提示

cp: overwrite ‘/etc/my.cnf’?

输入y, 回车

编辑my.cnf

复制代码
[client]
port=3306
socket=/tmp/mysql.sock
 
[mysqld]
port=3306
user=mysql
socket=/tmp/mysql.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
复制代码

8.配置环境变量 

[root@rsyncClient mysql]# vim /etc/profile
#配置mysql环境变量
PATH=/data/mysql/bin:/data/mysql/lib:$PATH
export PATH#让其生效
[root@rsyncClient mysql]# source /etc/profile#看环境变量是否生效
[root@rsyncClient mysql]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

9.启动mysql

systemctl start mysqld

 启动后会提示: 

Failed to start mysqld.service: Unit not found.

原因: 在CentOS7中已经不在推荐使用mysql,甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险。

解决办法: 

centOS7中启动MySQL数据库提示: Failed to start mysqld.service: Unit not found_我在北国不背锅的博客-CSDN博客

因为还是想用mysql, 所以就继续找找看有没有别的方法,于是就找到了下面这种

第二种方法

在这里我们采用本地下载将解压包传到服务器上的方法,当然使用wget也是一样的,只怕服务器传输速度太慢。先去mysql官网下载你所需要的mysql版本。这里我下载的是最新的8.0.19

下载地址:https://dev.mysql.com/downloads/mysql/
选择系统版本和系统位数下载就可以了

如果下载麻烦 可以通过百度网盘下载
链接:https://pan.baidu.com/s/1ttS14NeFCDETBbnabc5RJg
提取码:rgmu

 

 

 然后将压缩包上传到服务器上,可以使用Xftp或者其他的工具,安装包很大包含了mysql的测试包,实体,和路由。
打开目录到local下

cd /usr/local

将文件直接上传到这个目录,然后进行解压

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

解压之后加上下载的一共会出现四个压缩包,解压下面这个

 

 

 然后就解压出了一个文件夹 ,将他重命名为mysql

tar -xvf mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz

接着 在MySQL根目录下新建一个文件夹data,用于存放数据

mkdir data

创建 mysql 用户组和 mysql 用户

groupadd mysql
useradd -g mysql mysql

改变 mysql 目录权限

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

接下来 初始化数据库,下面这条命令网上很多都是不对的,本人亲测能用
如果出现目录不存在,查看是否已经更改了目录权限!!!
需要在mysql根目录下执行!!!

bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

如果提示:

bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

 则说明缺少libaio.so.1的依赖库,所以进行安装:

yum install -y libaio

这一步解决办法详情参考:mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

如果成功了,系统会给你一个临时的密码,务必要记录下来

 

接下来是mysql的配置

修改my.cnf文件

vim  /etc/my.cnf

 

修改为以下内容

复制代码
[mysqld]
    basedir = /usr/local/mysql   
    datadir = /usr/local/mysql/data
    socket = /usr/local/mysql/mysql.sock
    character-set-server=utf8
    port = 3306
   sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
 [client]
   socket = /usr/local/mysql/mysql.sock
   default-character-set=utf8
复制代码

如果有存emoji表情的需求,则 character-set-server 和 default-character-set 改为 utf8mb4

sql_mode按需修改, 我之前用的是:

sql-mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

如不添加 [client] 开启服务输入密码后将出现下列错误

Can 't connect to local MySQL server through socket '/tmp/mysql.sock '(2)

加入开机自启项:
1.将/support-files/mysql.server 拷贝为/etc/init.d/mysql并设置运行权限,这样就可以使用service mysql命令启动/停止服务

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

2.注册启动服务:

chkconfig --add mysql

查看是否添加成功

 chkconfig --list mysql
mysqld          0:off  1:off  2:on  3:on  4:on 5:on  6:off

启动mysql服务

# 启动
service mysql start;
# 查看启动状态
service mysql status;

示例图:

 

登陆

若启动报错

mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log'

执行以下操作

mkdir /var/log/mariadb
touch /var/log/mariadb/mariadb.log
# 用户组及用户
chown -R mysql:mysql /var/log/mariadb/
/usr/local/mysql/support-files/mysql.server start

然后重新启动

# 登陆
mysql -uroot -p
# 输入"初始化数据库"操作时的"临时密码"

若出现未找到命令,做一个软连接到mysql的安装目录下:

ln -s /usr/local/mysql/bin/mysql /usr/bin

输入初始化服务时的临时密码;
修改密码

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

设置允许远程连接

use mysql
update user set host ='%' where user='root';
FLUSH PRIVILEGES;

若远程连接还是不行, 看看防火墙有没有关, 还有服务器运营商的安全组有没有加

参考链接: 

Can't connect to MYSQL server on ''(10060)解决方式汇总_zzf1510711060的博客-CSDN博客

到此为止,所有的安装步骤就结束了。


有时候会遇到修改密码不生效的问题:解决办法如下↓

[root@izbp19kvzy03hpq35bq1jxz ~]# mysql -u root
ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)

 

这一段是拒绝user=root,host=localhost 的用户访问,需要数据密码

**解决方案:

1):**设置mysql为无密码启动

(修改MySQL的登录设置:vi /etc/my.cnf (部分Linux安装了vim,其命令则改为vim /etc/my.cnf)

在[mysqld]的段中加上一句:skip-grant-tables保存并退出vi。)

2):重新启动mysqld,清空密码

重启mysql:(这一步不能少,这是让my.cnf的修改生效)

service mysqld restart

进入mysql:

mysql -u root

进入mysql后,切换数据库至mysql:

use mysql;

清空密码:

update user set authentication_string='' where user='root';

3):退出mysql:exit; 并且 屏蔽skip-grant-tables:vi /etc/my.cnf,在skip-grant-tables前面添加#

4):重启mysql.

至此 mysql8.0 可以不需要密码登录了。登录成功之后重新设置密码和刷新权限 就可以远程访问了

设置密码:

‘root’@’%’ ‘root’等于user表里的user,’%’ 等于user表里的host

ALTER USER 'root'@'%' IDENTIFIED BY '新密码' PASSWORD EXPIRE NEVER;
 
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密码';

让密码马上生效:

FLUSH PRIVILEGES;

 

参考链接: linux CentOs7安装 Mysql 8 及以上版本(详细)_Code_bot_00的博客-CSDN博客

 

 

第三种方法:

链接:https://blog.csdn.net/qq_43192537/article/details/101108994

 

posted @   丶eric  阅读(126)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
· 全程使用 AI 从 0 到 1 写了个小工具
点击右上角即可分享
微信分享提示