linux 从源码编译安装mysql-sever
下载依赖
配置yum源(此步请自行查找资料),安装依赖包
yum install -y cmake g++ bison openssl-devel libaio ncurses-devel perl-Data-Dumper net-tools libtirpc-devel rpcgen libudev-devel
获取源码
拉取源码
git install https://github.com/mysql/mysql-server
如果没配代理,也可以手动下载后上传
编译
进入目录中
cd mysql-sever
配置
mkdir build && cd build
cmake ..
如果报错找不到boost
可以按照它给的链接下载devel-boost.tar.bz2(比如https://archives.boost.io/release/1.77.0/source/boost_1_77_0.tar.bz2),
在cmake命令中加入参数“-DWITH_BOOST=boost_1_77_0.tar.bz2存放的路径”
总结:
mkdir build && cd build
wget https://archives.boost.io/release/1.77.0/source/boost_1_77_0.tar.bz2 -P .. cmake .. -DWITH_BOOST=../boost_1_77_0.tar.bz2
编译(指定8核编译)
make -j 8
安装
如果要指定安装目录,用DESTDIR=/opt/mysql_server参数,否则默认安装在/usr/local/mysql目录下
make install
后续配置
创建软链接到/usr/bin
# mysql 默认安装到/usr/local
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql ln -s /usr/local/mysql/bin/mysqladmin /usr/bin/mysqladmin
创建mysql用户
# 检查用户和组是否存在 grep mysql /etc/group # 检查用户组 grep mysql /etc/passwd # 检查用户 # 创建用户组(若不存在) sudo groupadd mysql # 创建用户并加入用户组(若不存在) sudo useradd -r -g mysql -s /bin/false mysql
# 修改部分文件属主
chown -R mysql:mysql /usr/local/mysql/
创建配置文件
cat > /etc/my.cnf << EOF
[mysqld] basedir = /usr/local/mysql datadir = /usr/local/mysql/data socket = /usr/local/mysql/mysql.sock port = 3306 character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci [client] socket = /usr/local/mysql/mysql.sock
EOF
chown mysql:mysql /etc/my.cnf # 修改属主
创建服务
cat > /etc/systemd/system/mysqld.service << EOF
[Unit] Description=MySQL Server Documentation=man:mysqld(8) After=network.target After=syslog.target [Service] User=mysql Group=mysql ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf LimitNOFILE = 5000 Restart=on-failure RestartPreventExitStatus=1 [Install] WantedBy=multi-user.target
EOF
启动服务
for i in {1..3}; do if systemctl status mysqld; then break else systemctl restart mysqld sleep 5 fi done
产生数据库
/usr/local/mysql/bin/mysqld --initialize --user=mysql
上面的命令回显会包含初始密码,需要保存。
修改密码
首先登录
mysql -u root -p
输入初始密码
登录成功后,输入命令修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password(新密码)';