linux编译安装mysql5.7

本文详细记录了在1GB内存的树莓派上编译安装MySQL5.7的过程,包括解决编译中遇到的问题及配置方法。

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

听说编译mysql5.7编译很消耗内存,今天就在1g内存的树莓派下尝试一下

下载

wget mirrors.sohu.com/mysql/MySQL-5.7/mysql-boost-5.7.17.tar.gz
因为官方下载地址速度太慢了,所以我直接去搜狐镜像站下载了
tar -zxvf mysql-boost-5.7.17.tar.gz

编译安装

  • 首先安装cmake
    1.下载
    wget https://cmake.org/files/v3.7/cmake-3.7.2.tar.gz
    tar -zxvf cmake-3.7.2.tar.gz
    2.编译安装
    安装方法在readme里有
    ./bootstrap --prefix=/usr/local/cmake
    make
    这里可能有人会问为什么不加上-j参数,因为我加上后我的树莓派总是编译失败,所以不加了
    make install

之后执行
/usr/local/cmake/bin/cmake . -DWITH_BOOST=/data/mysql/mysql-5.7.17/boost/boost_1_59_0
后面with——boost的意思是加上boos库,因为我们下载的mysql是带boost的所以在mysql解压出来的源码文件里就有,而前面就是cmake的路径,因为我没有把cmake设置到系统的环境变量里,所以就只能用绝对路径了

  • 然后报错
CMake Error at cmake/readline.cmake:64 (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:107 (FIND_CURSES)
  cmake/readline.cmake:197 (MYSQL_USE_BUNDLED_EDITLINE)
  CMakeLists.txt:483 (MYSQL_CHECK_EDITLINE)


-- Configuring incomplete, errors occurred!
See also "/data/mysql/mysql-5.7.17/CMakeFiles/CMakeOutput.log".
See also "/data/mysql/mysql-5.7.17/CMakeFiles/CMakeError.log".

提示要安装libncurses5-dev
那就执行
sudo apt-get install libncurses5-dev

然后再次执行
/usr/local/cmake/bin/cmake . -DWITH_BOOST=/data/mysql/mysql-5.7.17/boost/boost_1_59_0
make
果然在
[ 44%] Building CXX object sql/CMakeFiles/sql.dir/item_geofunc.cc.o
这个的时候因为内存太小所以编译失败。

  • 那么就增加swap空间了
    1.创建swap文件
    sudo dd if=/dev/zero of=/swapfile bs=64M count=16
    这里的大小随便设置,文件名字也可以随便取,不一定是swapfile
    2.格式化
    sudo mkswap /swapfile
    3.启用swap空间
    sudo swapon /swapfile

然后
你可以free -m看一下swap空间是不是真的使用了,之后
make
编译的时间很长的,我用的是树莓派,所以更长,所以就没有统计时间了,你可以重复多执行几遍make
然后
make install

简单的配置

  • 首先建立mysql用户
    先说一下为什么要建立mysql用户,首先当什么很牛逼的黑客通过mysql拿到了数据库的权限后,它是不能拿到root权限的,所以两个字安全
    groupadd mysql
    useradd -g mysql mysql

  • 然后修改一些文件夹和文件的权限
    /usr/local/
    chown -R mysql mysql
    chgrp -R mysql mysql

  • 初始化mysql配置表
    cd mysql
    bin/mysqld --initialize --user=mysql
    然后要注意了,注意了,看输出的最后一行

2017-02-10T07:41:54.045121Z 1 [Note] A temporary password is generated for root@localhost: 1!HD!ijywTi)

1!HD!ijywTi这是root的密码
然后
bin/mysql_ssl_rsa_setup
这个我就不知道干什么的了,知道的求评论

  • 将mysql/目录下除了data/目录的所有文件,改回root用户所有,mysql用户只需作为mysql/data/目录下所有文件的所有者
    chown -R root .
    chown -R mysql data

  • 复制配置文件
    cp support-files/my-default.cnf /etc/my.cnf

  • 之后启动mysql
    bin/mysqld_safe --user=mysql &

  • 配置配置文件

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
[mysqld]
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# These are commonly set, remove the # and set as required.
basedir = /usr/local/mysql
#--mysql目录
datadir = /usr/local/mysql/data
#--数据库目录
# port = 3306
#--数据库端口
# server_id = .....
socket = /tmp/mysql.sock
#--socket目录
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M 
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
  • 复制mysql启动文件
    cp

  • 最后启动测试一下
    一直显示密码错误,可能是因为密码中有!的缘故,所以直接修改密码吧
    结束mysql所有进程
    然后
    mysqld_safe --skip-grant-tables --skip-networking &
    这个命令在mysql的bin目录下
    然后
    mysql -p
    mysql> update mysql.user set authentication_string=password('123qwe') where user='root' and Host = 'localhost';
    把密码改成自己的密码就好了
    然后结束mysql所有进程
    然后报错
    ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!
    使用指定用户启动就好了
    ./mysqld --user=root
    然后登陆
    ./mysql -uroot -p
    再次修改密码,因为刚才这样是创建不了数据库的
    set password=password('密码');

<think>好的,用户想了解如何在Linux系统上编译安装MySQL 5.7.44。首先,我需要回忆编译安装的基本步骤,以及可能遇到的常见问题。MySQL 5.7编译依赖项可能包括CMake、开发库如ncurses、openssl等。用户可能使用的是CentOS或Ubuntu,所以需要分别考虑不同的包管理工具。 首先,安装依赖项是关键步骤,不同发行版的命令不同。比如,Ubuntu下用apt-get,CentOS用yum。需要确保安装的依赖包齐全,否则编译过程会出错。接下来是下载源码包,用户需要从MySQL官网或镜像获取正确的版本,这里要确认链接是否有效,可能需要检查当前是否还提供5.7.44的源码。 然后,解压源码并进入目录,使用CMake配置编译选项。这里需要指定安装路径、字符集、存储引擎等参数。常见的选项如-DDEFAULT_CHARSET=utf8mb4和-DWITH_BOOST=...是否正确?特别是Boost库的位置可能需要用户自行下载或指定,如果系统没有预装的话。 编译安装阶段,make命令可能需要较长时间,尤其是单线程编译,用户可能会想用make -j来加速,但需注意系统资源。安装后的步骤包括创建mysql用户和组,设置目录权限,这些权限问题容易导致后续启动失败,需要详细说明。 初始化数据库使用mysqld的--initialize-insecure可能会让用户没有初始密码,或者使用--initialize生成随机密码,这里需要提醒用户记录日志中的临时密码。配置文件my.cnf的创建和基本设置,用户可能需要根据自己环境调整,比如内存配置或日志路径。 systemd服务的配置是必要的,特别是对于使用Systemd的系统,要确保服务文件正确,并且启用开机启动。最后是环境变量的设置,方便用户直接使用mysql命令。 用户可能的疑问点包括依赖项遗漏、CMake参数错误、权限问题、初始化失败以及服务启动失败。需要提前考虑这些情况,并在步骤中给出解决方法,比如查看CMake输出日志,检查错误信息,确保数据目录权限正确。 另外,安全方面的考虑,比如建议设置root密码,删除测试数据库和匿名用户,这些在初始化后可能需要用户手动处理。可能还需要提醒用户防火墙设置,开放3306端口如果远程访问需要。 最后,验证安装是否成功,通过启动服务、登录MySQL并执行简单命令。如果用户遇到问题,可能需要查看错误日志,通常是/var/log/mysql/error.log或数据目录下的日志文件。 总结来说,步骤需要详细但清晰,避免遗漏关键环节,同时预见到用户可能遇到的问题,并给出解决方案。确保命令准确无误,特别是路径和参数部分,可能需要多次验证。对于新手用户,可能需要更详细的解释,比如如何创建用户和组,如何编辑配置文件等。</think>以下是Linux系统编译安装MySQL 5.7.44的详细步骤: --- ### 一、准备工作 1. **安装依赖项** ```bash # CentOS/RHEL sudo yum install -y cmake gcc-c++ ncurses-devel openssl-devel bison make # Ubuntu/Debian sudo apt-get install -y cmake g++ libncurses5-dev libssl-dev bison make ``` 2. **创建专用用户** ```bash sudo groupadd mysql sudo useradd -r -g mysql -s /bin/false mysql ``` 3. **下载源码包** ```bash wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.44.tar.gz tar -zxvf mysql-5.7.44.tar.gz cd mysql-5.7.44 ``` --- ### 二、配置编译参数 ```bash mkdir build cd build cmake .. \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DSYSCONFDIR=/etc \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_SSL=system \ -DENABLED_LOCAL_INFILE=1 \ -DDEFAULT_CHARSET=utf8mb4 \ -DDEFAULT_COLLATION=utf8mb4_general_ci \ -DWITH_BOOST=../boost ``` --- ### 三、编译安装 ```bash make -j$(nproc) # 根据CPU核心数加速编译 sudo make install ``` --- ### 四、初始化配置 1. **设置目录权限** ```bash cd /usr/local/mysql sudo chown -R mysql:mysql . sudo mkdir -p /var/log/mysql sudo chown mysql:mysql /var/log/mysql ``` 2. **初始化数据库** ```bash sudo bin/mysqld --initialize-insecure --user=mysql \ --basedir=/usr/local/mysql \ --datadir=/usr/local/mysql/data ``` --- ### 五、配置文件 1. **创建my.cnf** ```bash sudo vi /etc/my.cnf ``` 添加基础配置: ```ini [mysqld] basedir=/usr/local/mysql datadir=/usr/local/mysql/data socket=/tmp/mysql.sock log-error=/var/log/mysql/error.log ``` --- ### 六、启动服务 1. **创建systemd服务** ```bash sudo vi /etc/systemd/system/mysql.service ``` 添加以下内容: ```ini [Unit] Description=MySQL Server After=network.target [Service] User=mysql Group=mysql ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf Restart=on-failure [Install] WantedBy=multi-user.target ``` 2. **启动MySQL** ```bash sudo systemctl daemon-reload sudo systemctl start mysql sudo systemctl enable mysql ``` --- ### 七、设置环境变量 ```bash echo 'export PATH=/usr/local/mysql/bin:$PATH' >> ~/.bashrc source ~/.bashrc ``` --- ### 八、验证安装 ```bash mysqladmin -u root version # 查看版本 mysql -u root # 无密码登录(因使用--initialize-insecure) ``` --- ### 常见问题处理 1. **依赖缺失**:根据CMake报错信息补充安装对应依赖 2. **初始化失败**:检查`/var/log/mysql/error.log`日志定位问题 3. **连接拒绝**:确认`/tmp/mysql.sock`是否存在,检查`my.cnf`配置路径 > 注意:生产环境建议使用`--initialize`生成随机密码,并通过`ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'`修改密码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值