1. 下载 Boost 库:你可以从 Boost 官方网站下载所需的版本(1.77.0)。链接如下:

    https://archives.boost.io/release/1.77.0/source/boost_1_77_0.tar.bz2
  2. 手动安装 Boost:下载后,你需要解压并构建 Boost 库。以下是一般步骤:

    复制
    tar xvf boost_1_77_0.tar.bz2
    cd boost_1_77_0
    ./bootstrap.sh
    sudo ./b2
    sudo ./b2 install
  3. 克隆源代码:使用Git命令克隆MySQL源代码仓库到本地计算机。

    git clone https://github.com/mysql/mysql-server.git
    或者
    wget https://github.com/mysql/mysql-server/archive/refs/tags/mysql-8.0.37.tar.gz
  4. 安装依赖:安装编译MySQL所需的依赖项。这可能包括编译器、库文件、以及一些开发工具。在Linux系统上,这通常可以通过包管理器完成,例如在Ubuntu上:

    sudo apt-get update
    sudo apt-get install build-essential libssl-dev zlib1g-dev libncurses5-dev libreadline-dev libpcre3-dev libaio1 libpcre3-dev libtool libtool-bin autoconf
    apt-get install bison
  5. 配置构建选项
    进入源代码目录,并运行cmakeconfigure脚本来配置构建选项。你可以指定安装目录、启用或禁用某些特性等。

  cd /root/mysql-server-mysql-8.0.37
  mkdir build && cd build
  cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql -DWITH_BOOST=/usr/local/include ..

这里的 .. 是指相对路径,指向源代码目录 /root/mysql-server-mysql-8.0.37

如果文件已经生成build/sql/CMakeLists.txt 文件,但 CMake 仍然报告找不到文件,尝试清理 CMake 缓存并重新配置:

  cd /root/mysql-server-mysql-8.0.37/build
  rm -rf *
  cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql -DWITH_BOOST=/usr/local/include ..
  1. 编译源代码:编译MySQL源代码。这可能需要一些时间,取决于你的计算机性能。

    make
  2. 安装MySQL:编译完成后,将编译好的MySQL安装到系统上。

    sudo make install
  3. 初始化MySQL:安装完成后,初始化MySQL数据库。

    sudo useradd --system --shell /bin/false --home /nonexistent mysql
    sudo groupadd --system mysql
    sudo mkdir -p /opt/mysql/data
    sudo chown mysql:mysql /opt/mysql/data
    sudo chmod 750 /opt/mysql/data

    找到 MySQL 的配置文件(通常是 /etc/mysql/my.cnf 或 /etc/my.cnf.d/mysql-server.cnf),确保 datadir 指向正确的路径,例如:

    [mysqld]
    datadir=/opt/mysql/data

    重新初始化 MySQL 数据目录:

    sudo rm -rf /opt/mysql/data/*
    sudo /opt/mysql/bin/mysqld --initialize --user=mysql --basedir=/opt --datadir=/opt/mysql/data
  4. 启动MySQL服务:启动MySQL服务,使其作为守护进程运行。

    vi /etc/systemd/system/mysqld.service
     [Unit]
    Description=MySQL Community Server
    [Service]
    ExecStart=/opt/mysql/bin/mysqld
    User=mysql
    Group=mysql
    [Install]
    WantedBy=multi-user.target
    
    systemctl daemon-reload
    sudo systemctl start mysqld
  5. 安全配置:运行mysql_secure_installation脚本来设置root密码,移除匿名用户,禁止root用户远程登录等安全措施。

    sudo mysql_secure_installation
  6. 验证安装:使用mysql命令行工具连接到MySQL服务器,验证安装是否成功。

    mysql -u root -p
    #重置密码
    USE mysql;
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
    #开启远程连接
    create user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
    #删除账号
    DROP USER 'username'@'host';
    #授权
    GRANT ALL ON *.* TO 'root'@'%';
    GRANT privileges ON database.table TO 'username'@'host';
    #撤销授权
    REVOKE ALL PRIVILEGES ON *.* FROM 'root'@'%';
    REVOKE privileges ON database.table FROM 'username'@'host';
    #刷新
    flush privileges;

mariadb编译安装

sudo apt install liblzma-dev flex libxml2-dev libbz2-dev liblz4-dev xz-utils liblzo2-dev libsnappy-dev

下载源码
https://mirrors.aliyun.com/mariadb//mariadb-10.11.8/source/mariadb-10.11.8.tar.gz

解压后编译

cmake . \
-DCMAKE_INSTALL_PREFIX=/opt/mariadb \
-DMYSQL_UNIX_ADDR=/opt/mariadb/mysql.sock \
-DSYSCONFDIR=/opt/mariadb/etc \
-DMYSQL_DATADIR=/opt/mariadb/data \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DWITHOUT_TOKUDB=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_READLINE=1 \
-DWITH_BOOST=system \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=1 \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DENABLED_LOCAL_INFILE=1
make && make install

配置MariaDB

chown -R mysql:mysql /opt/mariadb
# 复制 MariaDB 配置文件到 /etc 目录
cp /opt/mariadb/support-files/wsrep.cnf /opt/mariadb/etc/my.cnf
# 安装数据库到数据目录
/opt/mariadb/scripts/mysql_install_db --user=mysql --datadir=/opt/mariadb/data --defaults-file=/opt/mariadb/etc/my.cnf
# 创建启动脚本
cp /opt/mariadb/support-files/mysql.server /etc/init.d/mysqld
# 启动服务
/etc/init.d/mysqld start
# 配置环境变量
echo -e "export PATH=\$PATH:/opt/mariadb/bin/" > /etc/profile.d/mysql.sh
chmod 0777 /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh

初始化MariaDB

# 运行 MariaDB 初始化脚本
mysql_secure_installation
Enter current password for root (enter for none): # 直接Enter,预设MariaDB没有密码
Switch to unix_socket authentication [Y/n] y # y,切换到
Change the root password? [Y/n] y # y,设定root密码
Remove anonymous users? [Y/n] y # y,移除匿名登入
Disallow root login remotely? [Y/n] y # y,移除远端登入权限
Remove test database and access to it? [Y/n] y # y,移除测试资料库
Reload privilege tables now? [Y/n] y # y,重新载入权限表

设置自启动

systemctl enable mysqld.service && systemctl start mysqld.service
------------------
//Host xxx is not allowed to connect to this MariaDb server
IP-方法1
mysql> GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
授权指定IP-方法2
mysql> GRANT ALL PRIVILEGES ON *.* TO 'user'@'116.30.70.187' IDENTIFIED BY 'password' WITH GRANT OPTION; 
修改user表root用户host字段为%(所有IP)
mysql>use mysql; 
mysql>update user set host = '%' where user = 'root' and host='localhost';