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
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
如果成功了,系统会给你一个临时的密码,务必要记录下来
接下来是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
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
· 全程使用 AI 从 0 到 1 写了个小工具