MySQL5.7.40 源码安装
- 环境信息确认
- 卸载系统自带mysql
rpm -qa | grep mysql rpm -qa | grep mariadb yum remove mariadb-libs-5.5.60-1.el7\_5.x86\_64
复制
- 下载MySQL源码包
wget [https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.40.tar.gz](https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.40.tar.gz) wget http://sourceforge.net/projects/boost/files/boost/1.59.0/boost\_1\_59\_0.tar.gz tar xf mysql-5.7.40.tar.gz tar xf boost\_1\_59\_0.tar.gz -C /usr/local
复制
boots一组C++ 库的集合,提供了线性代数、伪随机数生成、多线程、图像处理、正则表达式、单元测试等功能。
上传到/opt/mysql5
- 安装依赖
yum install -y git gcc gcc-c++ yum install -y perl-Data-Dumper bzip2 yum install -y ncurses ncurses-devel ncurses-base ncurses-libs yum install -y openssl openssl-devel openssl-libs yum install -y bzip2 bzip2-devel yum install -y libtirpc libtirpc-devel yum install -y readline readline-devel
复制
- 添加MySQL用户
添加mysql用户及目录规划
groupadd mysql
useradd -M -g mysql -s /bin/bash mysql
- 规划目录
1软件目录basedir /usr/local/mysql-5.7.40
2数据目录datadir /usr/local/mysql-5.7.40/data
3日志目录 /usr/local/mysql-5.7.40/log/
4其他目录 /usr/local/mysql-5.7.40/tmp
# 软件目录(为mysql安装目录创建软链接或改目录名)
mkdir -p /usr/local/mysql-5.7.40/data mkdir -p /usr/local/mysql-5.7.40/tmp mkdir -p /usr/local/mysql-5.7.40/log
复制
#更改目录属组为mysql用户```
touch /usr/local/mysql-5.7.40/log/mysqld.log
chown -R mysql.mysql /usr/local/mysql-5.7.40
- 进行cmake编译mysql源文件
cd /opt/mysql5/mysql-5.7.40
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.7.40 \
-DMYSQL_DATADIR=/usr/local/mysql-5.7.40/data \
-DMYSQL_UNIX_ADDR=/usr/local/mysql-5.7.40/tmp/mysql.sock \
-DDOWNLOAD_BOOST=0 \
-DWITH_BOOST=/opt/mysql5/mysql-5.7.40/boost/boost_1_59_0 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_SSL=system \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH-SYSTEMD=1 \
-DWITH_DEBUG=0
- 编译并安装
[root@db02 ~/mysql-5.7.40]# make
# make可以用来批处理.c或.cpp文件的,它从makefile中读取相应指令,然后编译。
[root@db02 ~/mysql-5.7.40]# make install
\# make install将 make 生成的文件安装到系统的对应目录中,比如从github上下载下来一个依赖库的安装包,解压后经过上面几步,该依赖库的对应头文件和库文件就安装到系统中了。 #这条命令来进行安装(当然有些软件需要先运行 make check 或 make test来进行一些测试),这一步一般需要你有 root 权限(因为要向系统写入文件)  1. 初始化数据库(初始化mysql数据库(建立默认的库和表)) _【初始化 注:1、初始化时,data目录必须为空,2、将随机生成的登录密码记录下来】_ /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data  \[Note\] A temporary password is generated for root@localhost: **t(uqi+9aQk3E**   1. 编辑MySQL配置文件 _关于MySQL对应配置文件my.cnf 默认搜索顺序_ _/etc/my.cnf /etc/mysql/my.cnf /data/mysql/data/my.cnf ~/.my.cnf_ vim /etc/my.cnf \[mysqld\] basedir=/usr/local/mysql datadir=/usr/local/mysql/data socket=/usr/local/mysql/tmp/mysql.sock pid-file=/usr/local/mysql/tmp/mysqld.pid port=3306 character-set-server=utf8mb4 log-error=/var/log/mysql/mysqld.log \[mysql\] character-set-server=utf8mb4 socket=/usr/local/mysql/tmp/mysql.sock \[client\] character-set-server=utf8mb4 socket=/usr/local/mysql/tmp/mysql.sock 1. MySQL启停 2. 使用systemctl管理启动停止 vim /usr/lib/systemd/system/mysqld.service \[Unit\] Description=MySQL Server Documentation=man:mysqld(8) Documentation=https://dev.mysql.com/doc/refman/en/using-systemd.html After=network.target After=syslog.target \[Install\] WantedBy=multi-user.target \[Service\] User=mysql Group=mysql **ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf** LimitNOFILE = 5000 重新加载:systemctl daemon-reload 启动:systemctl start mysqld.service 停止:systemctl stop mysqld.service 启动:systemctl restart mysqld.service 启动:systemctl status mysqld.service   1. 命令启动停止 启动:mysqld\_safe &  停止:mysqladmin -uroot -p shutdown  1. 服务启动停止 /usr/local/mysql/support-files/mysql.server start /usr/local/mysql/support-files/mysql.server stop  1. 设置MySQL开启自动启动 将服务文件拷贝到init.d下,并重命名为mysql cp mysql/support-files/mysql.server /etc/init.d/mysqld 赋予可执行权限 chmod +x /etc/init.d/mysqld 1. 测试连接 ```bash \[root@host-mysql ~\]# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \\g. Your MySQL connection id is 2 Server version: 5.7.40-log Copyright (c) 2000, 2022, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\\h' for help. Type '\\c' to clear the current input statement. mysql> mysql> show databases; ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. mysql> mysql> alter user 'root'@'localhost' identified with mysql\_native\_password by 'Gauss\_234'; Query OK, 0 rows affected (0.01 sec) mysql> create user 'root'@'%' identified with mysql\_native\_password by 'Gauss\_234'; Query OK, 0 rows affected (0.00 sec) mysql> grant all privileges on \*.\* to 'root'@'%' with grant option; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> mysql> show databases; +--------------------+ | Database | +--------------------+ | information\_schema | | mysql | | performance\_schema | | sys | +--------------------+ 4 rows in set (0.00 sec) mysql> mysql> mysql> exit Bye
复制