云端Centos 04 安装新版MySQL8

本文详细记录了在Linux环境中安装MySQL 8.0时遭遇的依赖问题、冲突及解决步骤,包括通过yum源安装、依赖包管理与权限调整等关键环节。

目录

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

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

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

下载一个RedHat/Linux7的rpm包

执行下面命令安装

使用MySQL

执行下一个命令初始化mysql

ok, mysqld进程跑起来了

使用MySQL

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

编写MySQL HelloWorld


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

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

下面这个过程中可能会不断发现缺少依赖包,或者与已有软件发生冲突。

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

curl https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-community-server-8.0.23-1.el7.x86_64.rpm -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”

http://mirror.centos.org/centos/7/os/x86_64/Packages/

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

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

curl http://mirror.centos.org/centos/7/os/x86_64/Packages/libaio-0.3.109-13.el7.x86_64.rpm -o libaio.rpm

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

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

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

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

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

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

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

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

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

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

打开 https://dev.mysql.com/downloads/repo/yum/ (mysql开放的yum repo page)

下载一个RedHat/Linux7的rpm包

curl https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm -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 ;

 

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

参考链接:

https://www.cnblogs.com/lwl117/p/10861250.html

https://www.runoob.com/mysql/mysql-install.html

根据你的输出,`libmysqlclient.so` 目前指向 **`libmysqlclient.so.21`**(即 MySQL 8.0 系列的客户端库)。以下是关键分析和解决方案: --- ## **📌 当前状态分析** 1. **软链接关系**: ```bash libmysqlclient.solibmysqlclient.so.21libmysqlclient.so.21.2.28 ``` - 你使用的库版本为 **MySQL 8.0**(版本号 21.x 对应 MySQL 8.018.x 对应 MySQL 5.7)。 2. **潜在问题**: - 如果程序需要 **MySQL 5.7**(即 `libmysqlclient.so.18`),当前链接会导致兼容性问题。 - 运行时可能报错:`version 'libmysqlclient_21' not found`(如果目标机器缺少该版本)。 --- ## **✅ 解决方案** ### **1. 保持当前配置(推荐 MySQL 8.0)** 如果应用兼容 MySQL 8.0,直接编译运行: ```bash gcc your_program.c -I/usr/include/mysql -L/usr/lib64/mysql -lmysqlclient -o your_program ``` ### **2. 切换为 MySQL 5.7 版本(如需)** ```bash # 删除原链接 sudo rm /usr/lib64/mysql/libmysqlclient.so # 重新指向 5.7 版本 sudo ln -s /usr/lib64/mysql/libmysqlclient.so.18 /usr/lib64/mysql/libmysqlclient.so # 更新库缓存 sudo ldconfig ``` ### **3. 静态链接(避免运行时依赖)** 如果存在 `libmysqlclient.a`,可直接静态编译: ```bash gcc your_program.c -I/usr/include/mysql /usr/lib64/mysql/libmysqlclient.a -o your_program ``` --- ## **🔧 验证操作** ### **检查动态库依赖** ```bash ldd ./your_program | grep mysql ``` - **正常输出示例**: ```bash libmysqlclient.so.21 => /usr/lib64/mysql/libmysqlclient.so.21 (0x00007f9a1d12e000) ``` ### **测试代码兼容性** ```c #include <mysql/mysql.h> #include <stdio.h> int main() { printf("MySQL client version: %s\n", mysql_get_client_info()); return 0; } ``` - 如果输出类似 `MySQL client version: 8.0.33`,则环境正常。 --- ## **🚨 常见错误处理** | 错误场景 | 解决方案 | |---------|----------| | **`libmysqlclient.so.21: cannot open shared object file`** | 运行 `sudo ldconfig` 或安装 MySQL 8.0 客户端库 | | **函数调用报错(如 `mysql_init` 未定义)** | 确保编译时添加 `-lmysqlclient` | | **版本不匹配(如服务端是 5.7,客户端是 8.0)** | 统一服务端和客户端的库版本 | ---
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雷学委

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值