Ubuntu22.04编译安装Mysql5.7.35

Ubuntu22.04下编译安装MySQL5.7.35与OpenSSL1.1.1的教程
本文详细描述了在Ubuntu22.04的新版本中,由于openssl升级至3.0,如何解决编译过程中遇到的问题,包括安装依赖、手动编译openssl1.1.1并将其与mysql5.7.35正确集成的过程,以及初始化和配置MySQL服务。

新升级的ubuntu22.04版本,该版本默认openssl已经升级到3.0,所以编译过程遇到一些问题记录一下。

编译步骤:

安装依赖

gcc g++已经安装过就不需要再安装了。

apt-get install cmake
apt-get install libaio-dev
apt-get install libncurses5-dev
apt-get install pkg-config
apt-get install zliglg-dev

还有缺少其它依赖的相继安装就可以了。

编译openssl1.1.1

因为默认的openssl3.0,mysql执行cmake过程一直报错,所以手动下载openssl1.1.1编译

Please install the appropriate openssl developer package.

手动下载openssl源码编译

tar xzvf openssl-1.1.1u.tar.gz
cd openssl-1.1.1u
./config --prefix=/usr/local/openssl
make
make install

编译完成后,验证命令行bin/openssl是否正常,如果无法正常使用需要排查问题。

编译mysql

编译需要依赖于mysql-boost,这个文件可以视网络情况而定,我这里使用编译时下载,也可以是使用本地文件(先下载,指定文件路径)
cmake后需要出现--Confiuring done --Generating done并且中间没有报错才算配置成功,一般中间的办错都是依赖包不完整造成的
**注意:**这里的-DWITH_SSL参数指定路径就是openssl编译安装的路径,具体参数配置可以参考

  1. -DINSTALL_LAYOUT=name
    选择预定义的安装布局:

STANDALONE:与.tar.gz和 .zip软件包使用的布局相同 。这是默认值。
RPM:布局类似于RPM软件包。
SVR4:Solaris软件包布局。
DEB:DEB程序包布局(实验)。

  1. -DWITH_SSL={ssl_type| path_name}
    为了支持加密连接,用于生成随机数的熵以及其他与加密相关的操作,必须使用SSL库来构建MySQL。此选项指定要使用的SSL库。
    ssl_type 可以是以下值之一:

yes:使用系统OpenSSL库(如果存在),否则使用与发行版捆绑在一起的库。
bundled:使用与发行版捆绑在一起的SSL库。这是MySQL 5.7.28之前的默认设置。从5.7.28开始,该值不再是允许的值,默认值为 system。
system:使用系统OpenSSL库。自MySQL 5.7.28起,这是默认设置。
path_name是要使用的OpenSSL安装的路径名。 这可能比使用系统的ssl_type值更好,因为它可以防止CMake检测和使用系统上安装的较旧或错误的OpenSSL版本。 (执行相同操作的另一种允许的方法是将WITH_SSL设置为system并将CMAKE_PREFIX_PATH选项设置为path_name。)

  1. -DMYSQL_DATADIR=/usr/local/mysql/data
    -DINSTALL_PLUGINDIR=/usr/local/mysql/plugin

注意 这两个参数可以不在cmake过程指定,这个过程在不同的环境可能会有问题,后续启动通过my.cnf文件也可以实现

cd mysql-5.7.35
mkdir debug
cd debug

cmake .. -DBUILD_CONFIG=mysql_release \
-DINSTALL_LAYOUT=STANDALONE \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DENABLE_DTRACE=OFF \
-DWITH_EMBEDDED_SERVER=OFF \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_SSL=/usr/local/openssl \
-DWITH_ZLIB=system \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_DEBUG=OFF \
-DDOWNLOAD_BOOST=1 -DWITH_BOOST=..

sudo make -j 16
sudo make install

接下来,mysql已经安装到指定的路径/usr/local/mysql,后续启动即可。

初始化mysql

增加mysql用户,修改授权

sudo groupadd mysql
sudo useradd -g mysql mysql

cd  /usr/local
sudo chown -R mysql mysql 
sudo chgrp -R mysql mysql

修改启动配置文件my.cnf

cd /usr/local/mysql
mkdir conf
vi conf/my.cnf

配置参数,根据规则添加

[mysqld]
port=5306
datadir=/usr/local/mysql/data
log_error=/usr/local/mysql/data/error.log
basedir=/usr/local/mysql/

初始化启动mysql

sudo bin/mysqld --defaults-file=/usr/local/mysql/conf/my.cnf --initialize --user=mysql

sudo bin/mysqld --defaults-file=/usr/local/mysql/conf/my.cnf --user=mysql

初次登录mysql需要查找默认的密码,密码生成在error.log当中,找到一堆类似乱码P*lt?ts,b8u>的东西就是密码了

bin/mysql -uroot -P5306
cat error.log |grep password
bin/mysql -uroot -p
ALTER USER ‘root'@'localhost' IDENTIFIED BY '123456';

到这一步就是mysql在ubuntu22.04平台编译安装完成了。

Ubuntu 22.04 系统上安装 MySQL 时遇到配置错误,通常可能涉及以下几个方面:依赖问题、版本不兼容、配置文件冲突、服务启动失败等。以下是一些常见的解决方案,结合了系统环境与安装方式的适配性进行分析。 ### 3.1 检查安装方式与版本兼容性 如果选择的是 `.deb` 包安装方式,需要确保下载的 MySQL 版本与 Ubuntu 22.04 兼容。例如,引用[2]中提到的 `mysql-server_5.7.40-1ubuntu18.04_amd64.deb-bundle.tar` 是为 Ubuntu 18.04 构建的包,可能在 Ubuntu 22.04 上存在依赖问题。建议优先选择官方 APT 仓库安装,或者使用适用于 Ubuntu 22.04 的构建版本。 如果使用 `.tar.gz` 包进行手动安装(如引用[1]中提到的 `mysql-8.0.22-el7-x86_64.tar.gz`),需要注意该版本是为 Red Hat 系统(如 CentOS)构建的,可能与 Ubuntu 的库路径、依赖管理存在不兼容问题。建议使用适用于 Ubuntu 的二进制包或源码编译安装。 ### 3.2 解决依赖问题 安装过程中如果提示类似 `unmet dependencies` 的错误(如引用[3]中所述),说明存在未满足的依赖项。可以通过以下命令尝试修复: ```bash sudo apt update sudo apt --fix-broken install ``` 如果仍然无法解决,可以尝试手动安装缺失的依赖包。例如: ```bash sudo apt install libmysqlclient-dev libssl-dev ``` 此外,MySQL 5.7Ubuntu 22.04 上可能缺少 `libmecab5` 等旧版本依赖,可尝试安装: ```bash sudo apt install libmecab5 ``` ### 3.3 配置文件冲突或权限问题 如果安装过程中提示配置文件错误或权限问题,可以尝试删除旧的 MySQL 配置文件: ```bash sudo rm -rf /etc/mysql sudo apt purge mysql-server mysql-client mysql-common sudo apt install mysql-server ``` 此操作将清除旧配置并重新安装 MySQL 服务。 ### 3.4 启动失败或服务异常 如果 MySQL 服务无法启动,可以查看日志进行排查: ```bash sudo systemctl status mysql sudo journalctl -u mysql.service ``` 常见问题包括数据目录权限不正确、端口冲突(如 3306 被占用)、配置文件语法错误等。可以尝试重新初始化数据目录: ```bash sudo mysqld --initialize ``` ### 3.5 密码验证失败或登录问题 如果安装后无法登录 MySQL,可能是密码错误或认证方式问题。MySQL 8.0 默认使用 `caching_sha2_password` 插件,部分客户端可能不支持。可以通过以下方式重置密码并更改认证方式: 1. 停止 MySQL 服务: ```bash sudo systemctl stop mysql ``` 2. 启动跳过权限检查模式: ```bash sudo mysqld_safe --skip-grant-tables & ``` 3. 登录并修改密码: ```sql UPDATE mysql.user SET authentication_string=PASSWORD('new_password'), plugin='mysql_native_password' WHERE User='root'; FLUSH PRIVILEGES; ``` 4. 重启 MySQL 服务: ```bash sudo systemctl restart mysql ``` ### 3.6 使用官方 APT 仓库安装(推荐) 为避免版本和依赖问题,建议使用 MySQL 官方 APT 仓库安装: 1. 下载并添加仓库配置: ```bash wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb sudo dpkg -i mysql-apt-config_0.8.22-1_all.deb ``` 2. 更新软件源并安装 MySQL: ```bash sudo apt update sudo apt install mysql-server ``` 该方式会自动处理依赖关系,并适配 Ubuntu 系统环境。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值