提示:仅供学习使用:
本教程从全新系统开始,apt源为阿里云
#安装编译环境及依赖
#配置编译目录,这步可不用配置到内存
apt install wget build-essential cmake libssl-dev libncurses5-dev pkg-config bison libudev-dev libsasl2-dev libldap2-dev
#配置编译目录,这步可不用配置到内存,配置到内存是为了加速编译
mkdir -p /ok #不配置到内存不执行下面这行 mount -t tmpfs -o size=8G tmpfs /ok #从内存卸载,会清空 #umount /ok
#进入目录下载mysql源码并解压及创建编译目录并进入
cd /okwget -c https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-8.2.0.tar.gztar -zxvf ./mysql-boost-8.2.0.tar.gzcd mysql-8.2.0/mkdir buildcd build
#安装ccache缓存加速编译
apt install ccache
ln -s /usr/bin/ccache /usr/local/bin/gcc
ln -s /usr/bin/ccache /usr/local/bin/g++
ln -s /usr/bin/ccache /usr/local/bin/c++
ln -s /usr/bin/ccache /usr/local/bin/cc
#配置编译参数,这里参考了 https://dev.mysql.com/doc/refman/8.3/en/source-configuration-options.html
cmake ../ -DCMAKE_INSTALL_PREFIX=/opt/mysql -DMYSQL_DATADIR=/opt/mysql/data -DDOWNLOAD_BOOST=1 -DWITH_BOOST=../boost -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DSYSCONFDIR=/etc -DMYSQL_TCP_PORT=3306 -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_SSL=system
#编译,多少线程就用-j多少,实测中4核心4线程,此处时间较长,实测cpu i5 3470 os debian12.5 纯字符界面用时3600秒
make -j4
#执行测试,此步骤可省略,用时也较长
make test
make install
#创建配置文件的几个目录
mkdir /opt/mysql/tmpmkdir /opt/mysql/datamkdir /var/run/mysqld/
#创建配置文件
vim /etc/my.cnf
#配置文件内容如下
[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
bind-address = 0.0.0.0
user = root
port = 3306
basedir = /opt/mysql
datadir = /opt/mysql/data
tmpdir = /opt/mysql/tmp
pid-file = /var/run/mysqld.pid
log-error = /opt/mysql/tmp/error.log
socket = /tmp/mysql.sock
default-storage-engine = innodb
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
#初始化数据库
/opt/mysql/bin/mysqld --initialize-insecure
#复制服务
cp /opt/mysql/support-files/mysql.server /etc/init.d/mysql cp /opt/mysql/bin/mysqld /etc/init.d/ chmod +x /etc/init.d/mysql
#启动服务及查看状态
/etc/init.d/mysql start /etc/init.d/mysql status /etc/init.d/mysql stop update-rc.d mysql defaults service mysql start
#创建mysql软链接
ln -s /opt/mysql/bin/mysql /usr/local/bin/mysql
#登录数据库并修改密码,实测中直接回车能进
mysql -uroot -pALTER USER 'root'@'localhost' IDENTIFIED BY 'OkPlus123456';flush privileges;exit;
#允许远程连接
mysql -uroot -p use mysql; update user set host = '%' where user ='root'; flush privileges; exit;
#关闭服务
service mysql stop