[小白向Linux基操] 04 安装新版MySQL8 [解决各种坑建议收藏]

391 阅读6分钟

这是我参与8月更文挑战的第15天,活动详情查看:8月更文挑战

目录

Option1 下载server完整的RPM包进行安装,最后失败了

继续后有发现软件冲突和无底洞的未知依赖

Option2 好吧,重新来过,通过yum来安装

下载一个RedHat/Linux7的rpm包

执行下面命令安装

使用MySQL

执行下一个命令初始化mysql

ok, mysqld进程跑起来了

使用MySQL

MySQL8 第一次登录需要修改用户密码

编写MySQL HelloWorld


MySQL是一个数据库软件,下面开始安装,推荐Option2

本文基于CentOS安装。

Option1 下载server完整的RPM包进行安装,最后失败了

注意:直接安装可以从Option2 :通过yum安装开始。

雷学委尝试的过程中,之前会不断发现缺少依赖包,或者与已有软件发生冲突。

直接把链接拷贝出来,在云端或者虚拟安装

curl cdn.mysql.com//Downloads/… -o m.rpm

通过RPM工具安装rpm包,这里会遇到依赖包缺失找不到的问题。

rpm -ivh m.rpm

通过yum继续安装缺失的包:

yum -y install perl

继续安装rpm包,发现缺少libaio包:“libaio.so.1()(64bit) is needed by mysql-community-server-8.0.23-1.el7.x86_64”

mirror.centos.org/centos/7/os…

rpm包名如果跟上devel,表示这个是开发相关的包(头文件,链接库)。举个简单来说,下载一个python-devel主要是为了在python源码修改方面开发使用。

所以这里选择libaio(不带devel)x86_64的包,我们的目的是使用这个libaio库。

curl mirror.centos.org/centos/7/os… -o libaio.rpm

继续后有发现软件冲突和无底洞的未知依赖

安装后发现还缺少了几个依赖。。。

查看操作系统有自带到mariadb(mysql开源分支)

给整吐了,新的错误来了:Failed dependencies: libmysqlclient.so

尝试了上述命令(rpm -e),发现也删除不了。

通过rpm完整包来安装,整个过程需要自己解决一个一个软件依赖,这个过程可能是个无底洞。。。

Option2 好吧,重新来过,通过yum来安装

参考了这个文章:www.runoob.com/mysql/mysql…(不可以直接照搬)

访问mysql的yum repo页面,我们可以看到,MySQL提供了一个精简到rpm包。

通过安装它,可以通过yum安装mysql-server(自动安装其他需要依赖)

打开 dev.mysql.com/downloads/r… (mysql开放的yum repo page)

学委下载一个RedHat/Linux7的rpm包

curl repo.mysql.com//mysql80-co… -o mysql.rpm

rpm -ivh mysql.rpm

(这个精简的rpm包很小哦)

再回过头看,查看yum 源配置,我们发现上面的rpm作用主要在于添加来下面的两个mysql yum 源。

执行下面命令安装

yum update #升级所有应用包的同时也升级系统内核,可以看情况执行另一句:yum upgrade, 只升级所有应用包。

yum -y install mysql-server #需要一些时间下载包安装

好了,安装完成。

使用MySQL

刚刚安装好,我们发现系统多了/var/lib/mysql目录,同时的也多了一个mysql用户和用户组。

通过systemctl查看进程状态发现mysqld(mysql server的daemon进程)是inactive,还没有开启。

如果发现,/var/lib目录下的mysql目录并非mysql用户管理,需要执行:

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

执行下一个命令初始化mysql

mysqld --initialize

然后执行:ls -rtla /var/lib/mysql*, 数据目录创建了,不过这里有点小问题,先留意一下。

初始化了数据库发现启动不了

systemctl start mysqld

查看/etc/my.cnf 发现也没啥特别的,我们看看log吧

看的问题所在了,mysqld进程发现’ibdata1‘ 不可写。

这个跟前面初始化发现所有文件都是root用户读写,导致mysqld进程无法操作

我们可以尝试下面命令,将/var/lib/mysql下面的所有文件都改为mysql用户拥有的。

cd /var/lib/mysql && find . -name '*.*'|xargs chown -R mysql:mysql

ok, mysqld进程跑起来了

使用MySQL

以前旧版本MySQL一般装完后,打mysql命令,就能进入mysql client终端。

这个版本发现没有生成空密码的用户了。

好吧,我们回去看log, 新版本的(8.X)不默认生成空密码用户了,具体在log里面。

复制密码保存,并输入命令: mysql -u root -p

好了,成功连接了服务器,试试查询数据库看看。

遇到错误:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

MySQL8 第一次登录需要修改用户密码

alter user 'root'@'localhost' identified by '123456';

show database;

编写MySQL HelloWorld

输入下面的SQL试试

use mysql; --#使用mysql库

create table developer (--创建一个表
d_id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(40) NOT NULL,
title VARCHAR(100) NOT NULL,
PRIMARY KEY (d_id) );

select * from developer ; -- 查询数据

insert into developer (name,title) values ('Levin','Engineer'); -- 添加数据
select * from developer ;

 

挺多步骤的,读者可以自己试试。

持续学习持续开发,我是雷学委!
编程很有趣,关键是把技术搞透彻讲明白。
创作不易,请多多支持,点赞收藏支持学委吧!

参考链接:

www.cnblogs.com/lwl117/p/10…

www.runoob.com/mysql/mysql…