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




