源码编译安装mysql5.6报错及解决方法

本文详细记录了MySQL5.6从源码编译安装的过程,包括解决cmake配置时未找到Curses库的问题及服务启动时的常见错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以前都是根据铭哥教程里面的mysql5.1做的LAMP搭建,比较顺利,看到小伙伴们各个在源码编译,于是也试了一把,安装mysql5.6,过程如下:

1.首先下载源码包,解压到目录
2.切换到mysql所在目录执行cmake命令
3.由于系统没有cmake命令,于是yum install cmake -y   进行安装
4.前面步骤细节就省略了,直接到cmake这里:
#cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql_data -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci




报错如下:
-- Could NOT find Curses (missing:  CURSES_LIBRARY CURSES_INCLUDE_PATH)

CMake Error at cmake/readline.cmake:82 (MESSAGE):
  Curses library not found.  Please install appropriate package,

      remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.
Call Stack (most recent call first):
  cmake/readline.cmake:126 (FIND_CURSES)
  cmake/readline.cmake:216 (MYSQL_USE_BUNDLED_LIBEDIT)
  CMakeLists.txt:250 (MYSQL_CHECK_READLINE)


解决方法:

[root@localhost mysql-5.6.1]# rm CMakeCache.txt
[root@localhost mysql-5.6.1]# yum install ncurses-devel

[root@localhost mysql-5.5.11]# yum install bison

接着继续执行编译

#cmake......

#make && make install


2.编译完成,安装好之后

2.1 新建系统用户mysql ,并禁止登陆

#useradd -s /sbin/nologin mysql

2.2 建立数据库存放目录

#mkdir -p /data/mysql_data

#chown -R mysql:mysql /data/mysql_data

2.3进行数据库初始化:

#cd /usr/local/mysql 

#./scripts/mysql_install_db --user=mysql --datadir=/data/mysql_data

#cp support-files/my-large.cnf /etc/my.cnf 
#cp support-files/mysql.server /etc/init.d/mysqld
#chmod 755 /etc/init.d/mysqld 
#vim /etc/init.d/mysqld          //添加datadir=路径

#service mysqld start            -------------------------------服务启动报错

报错信息如下:

[root@centos6 mysql_data]# service mysqld start
Starting MySQL...The server quit without updating PID file [失败]/mysql_data/centos6.6.pid).

解决方法:

根据报错信息,怀疑可能文件丢失造成的原因,对比我另外一个测试机已经搭建好的环境,检查同样的数据库目录下,发现本机确实少了一个centos6.6.pid文件

解决方法:

#cd /data/mysql_data                //数据库文件存放目录

#vi centos6.6.pid         //编辑此文件,添加一个pid号码

1583  

保存退出。           //1583是我在系统中随意添加的号,只要保证系统进程里没有的ID都可以

#service mysqld start      正常启动                         ----------------------------成功解决



其他原因也可造成上述错误,具体原因具体解决方法参考:http://blog.sina.com.cn/u/2157443242

如有问题,欢迎指正!



本文转自 小杨_Ivan 51CTO博客,原文链接:http://blog.51cto.com/aqiang/1895593

<think>我们正在回答用户关于在Ubuntu上从源码编译安装MySQL的问题。根据提供的引用,我们可以总结出以下步骤: 1. 下载MySQL源码 2. 安装必要的依赖 3. 配置编译选项(使用cmake) 4. 编译安装 注意:引用中提供了不同版本的MySQL5.6, 5.7, 8.0)的编译示例,我们以较新的MySQL 8.0为例,但步骤类似。 步骤详细说明: 1. 下载源码: 我们可以从MySQL官方网站下载源码包。例如,下载MySQL 8.0.26(注意:版本可能会更新,请根据实际需要选择): ```bash wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.26.tar.gz ``` 然后解压: ```bash tar -zxvf mysql-8.0.26.tar.gz cd mysql-8.0.26 ``` 2. 安装编译所需的依赖: ```bash sudo apt update sudo apt install cmake build-essential libncurses5-dev libssl-dev # 对于MySQL 8.0,还需要boost库,我们可以选择在cmake时自动下载(使用-DDOWNLOAD_BOOST=1)或者手动下载并指定路径 ``` 3. 使用cmake配置编译选项: 创建一个构建目录(推荐)并进入: ```bash mkdir build cd build ``` 运行cmake,指定安装目录、数据目录、端口等参数。参考引用[3]和[4]中的配置,我们可以这样写: ```bash sudo cmake .. \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DSYSCONFDIR=/etc \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_MEMORY_STORAGE_ENGINE=1 \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_READLINE=ON \ -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ -DMYSQL_TCP_PORT=3306 \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DDOWNLOAD_BOOST=1 \ -DWITH_BOOST=../boost ``` 注意: - `-DCMAKE_INSTALL_PREFIX`:指定安装目录 - `-DMYSQL_DATADIR`:指定数据存储目录 - `-DSYSCONFDIR`:指定配置文件目录(通常为/etc) - `-DDOWNLOAD_BOOST=1`:自动下载boost库,并指定下载到当前目录的boost子目录(使用`-DWITH_BOOST=../boost`) - 其他参数如存储引擎、端口、字符集等根据需求设置。 4. 编译安装: ```bash sudo make -j$(nproc) # 使用所有CPU核心加速编译 sudo make install ``` 5. 安装后的配置: 安装完成后,需要进行初始化、设置配置文件、启动服务等操作。 a) 添加mysql用户和组: ```bash sudo groupadd mysql sudo useradd -r -g mysql -s /bin/false mysql ``` b) 修改安装目录的权限: ```bash sudo chown -R mysql:mysql /usr/local/mysql ``` c) 初始化数据库: ```bash sudo /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data ``` 初始化会生成一个临时密码,需要记录下来。 d) 设置配置文件: 复制配置文件模板到/etc/my.cnf(或/etc/mysql/my.cnf): ```bash sudo cp support-files/my-default.cnf /etc/my.cnf # 然后根据需要进行编辑 ``` e) 设置服务启动脚本: ```bash sudo cp support-files/mysql.server /etc/init.d/mysql sudo update-rc.d mysql defaults ``` f) 启动MySQL服务: ```bash sudo service mysql start ``` g) 修改root密码: 使用初始化时生成的临时密码登录: ```bash /usr/local/mysql/bin/mysql -u root -p ``` 然后修改密码: ```mysql ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; ``` 注意:以上步骤是一个基本流程,具体细节可能会因版本和系统环境而有所不同。请根据实际情况调整。 由于编译安装过程较为复杂,且容易出错,建议参考官方文档:https://dev.mysql.com/doc/refman/8.0/en/source-installation.html 根据用户提供的引用,我们整合了上述步骤。请用户注意,在编译过程中可能会遇到依赖问题,需要根据错误提示安装相应的依赖包。 现在,我们按照要求生成相关问题:</think>### 在Ubuntu上从源码编译安装MySQL的步骤 #### 1. **安装依赖工具** 编译前需安装必要的开发工具和库: ```bash sudo apt update sudo apt install build-essential cmake libncurses5-dev libssl-dev pkg-config wget ``` #### 2. **下载MySQL源码** 从MySQL官网下载源码包(以MySQL 8.0.26为例): ```bash wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.26.tar.gz tar -zxvf mysql-8.0.26.tar.gz cd mysql-8.0.26 ``` #### 3. **配置编译选项** 创建构建目录并运行`cmake`配置参数: ```bash mkdir build cd build sudo cmake .. \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ # 安装路径 -DMYSQL_DATADIR=/usr/local/mysql/data \ # 数据存储目录 -DMYSQL_TCP_PORT=3306 \ # 默认端口 -DDOWNLOAD_BOOST=1 \ # 自动下载Boost库 -DWITH_BOOST=../boost \ # Boost库路径 -DSYSCONFDIR=/etc \ # 配置文件目录 -DWITH_INNOBASE_STORAGE_ENGINE=1 \ # 启用InnoDB -DDEFAULT_CHARSET=utf8mb4 \ # 默认字符集 -DDEFAULT_COLLATION=utf8mb4_general_ci ``` > **关键参数说明**: > - `-DDOWNLOAD_BOOST=1`:自动处理依赖的Boost库[^3][^4] > - 其他路径参数需根据实际需求调整 #### 4. **编译安装** 启用多线程编译(`nproc`获取CPU核心数): ```bash sudo make -j$(nproc) sudo make install ``` #### 5. **初始化数据库** 创建系统用户并初始化数据目录: ```bash sudo groupadd mysql sudo useradd -r -g mysql -s /bin/false mysql sudo /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data ``` > 记录输出的临时root密码(如:`A temporary password is generated for root@localhost: 3eG9qy!uQ*`) #### 6. **启动MySQL服务** 复制服务脚本并启动: ```bash sudo cp support-files/mysql.server /etc/init.d/mysql sudo service mysql start ``` #### 7. **安全配置** 使用临时密码登录并修改密码: ```bash /usr/local/mysql/bin/mysql -u root -p ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_new_password'; ``` --- ### **常见问题解决** - **依赖错误**:根据`cmake`报错安装缺失包(如`libtinfo5`) - **权限问题**:确保`/usr/local/mysql`目录属主为`mysql:mysql` - **Boost库下载失败**:手动下载Boost并指定路径[^3] > **性能提示**:编译时使用`-j$(nproc)`可加速30%-50%(如4核机器:`make -j4`) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值