mysq5.7.44源代码方式
下载安装配置
官网文档
https://dev.mysql.com/doc/refman/5.7/en/installing-source-distribution.html
mysql下载
打开mysql官网网站 https://www.mysql.com/,点击download进入下载页面。
在下载页面中找到mysql社区服务器版本,点击“MySQL Community (GPL) Downloads ?”进入社区服务器版的下载页面。
点击社区服务器版“MySQL Community Server”
点击存档“Archives”,选择操作系统,操作系统版本,找到源码。
源安装先决条件
gcc-c++编译器
yum install -y gcc-c++
CMake编译工具
CMake是一个跨平台的开源构建工具,用于构建mysql软件。他写CMakeLists.txt文件来描述项目的结构,用cmake生成makefile文件,共make编译使用。
yum install cmake
cmake官网下载
https://cmake.org/download/,源码编译见软件包中的readme文件。
查看cmake版本
cmake --version
make编译工具
一般系统自带这个编译工具,可以通过make --version查看版本。
OpenSSL 库
需要 SSL 库来支持加密连接、随机数生成。
yum install openssl-devel
Boost C++ 库
Boost是一个由C++社区开发和维护的开源C++库集合,旨在扩展C++语言的功能和性能。
构建 MySQL 需要 Boost C++ 库,必须安装Boost 1.59.0,安装 Boost 后,根据调用WITH_BOOST在CMake 时为选项设置的值告诉构建系统 Boost 文件的放置位置。
见以下两个选项:
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/boost
ncurses 库
ncurses库是一个用于创建文本用户界面(TUI)的开发库。
yum install ncurses-devel
Perl库
如果您打算运行测试脚本,则需要 Perl。
mysql安装
创建mysql用户和组
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
安装
解压
cd /soft
tar zxvf mysql-5.7.44.tar.gz
cd mysql-5.7.44
创建构建目录
mkdir build
cd build
构建make编译文件
cmake .. \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/home/mysql \
-DSYSCONFDIR=/etc \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DMYSQL_TCP_PORT=3306 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/boost
说明:
-DCMAKE_INSTALL_PREFIX:配置安装到特定路径
-DMYSQL_DATADIR:配置数据目录
-DSYSCONFDIR:配置选项文件的目录
-DDEFAULT_CHARSET:配置mysql服务字符集,默认字符是latin1(cp1252西欧)字符集
-DDEFAULT_COLLATION:服务器排序规则。默认排序规则使用 latin1_swedish_ci。
-DMYSQL_TCP_PORT:服务器侦听 TCP/IP 连接的端口号。默认值为 3306。
-DDOWNLOAD_BOOST:检查是否有boost库
重新构建时运行以下命令清楚历史构建信息
make clean
rm -rf CMakeCache.txt
编译&安装
make
make install
mysql设置
创建mysql用户和组
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
添加环境变量
echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile
source /etc/profile
echo $PATH
初始化数据目录
切换到mysql软件根目录
cd /usr/local/mysql
创建mysql-files目录
mkdir mysql-files
chown mysql:mysql mysql-files
mysql-files目录提供了一个方便的位置来用作系统变量的值 secure_file_priv,这将导入和导出操作限制到特定目录。
创建mysql配置文件
vi /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/home/mysql
MySQL安装完成后,必须初始化数据目录。
bin/mysqld --defaults-file=/etc/my.cnf \
--initialize \
--user=mysql
--defaults-file:指定初始化时的配置文件,必须在选项的第一位。(配置文件中只能有basedir和datadir,其他选项需要在初始化后才能加入)
--initialize:初始化
--user:指定mysql软件运行用户
注意:初始化数据库目录时,除了使用--basedir、--datadir、--user选项外,不应该使用其他选项。其他选项可以在初始化完成后再my.cnf中指定,然后重启mysql服务。意思就是说初始化数据库目录时最多只能使用--basedir、--datadir、--user选项。
部署自动支持安全连接的服务器
bin/mysql_ssl_rsa_setup
启动服务器
bin/mysqld_safe --user=mysql &
对于使用 RPM 包安装 MySQL 的 Linux 系统,服务器启动和关闭是使用 systemd 而不是mysqld_safe管理的,并且 不安装mysqld_safe 。
开机启动启动服务器
cd support-files/
cp mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
chkconfig --add mysql
启动停止和重启
service mysql start
service mysql stop
service mysql restart
修改root密码
登录mysql后运行如下命令修改密码,登录密码在初始化数据目录时有显示。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Welcome123#';
查看用户
查看默认存在的用户
select user,host from mysql.user;
使用systemd管理MySQL服务器
创建MySQL的systemd服务单元文件
你需要在“/etc/systemd/system/”创建一个“mysql.service”的文件,告诉systemd如何管理MySQL服务。
文件内容如下:
[Unit]
Description=MySQL Server
After=network.target
[Service]
ExecStart=/usr/local/mysql/bin/mysqld_safe --user=mysql
ExecStop=/usr/local/mysql/bin/mysqladmin shutdown
User=mysql
Group=mysql
Restart=always
[Install]
WantedBy=multi-user.target
说明:
After=network.target 是systemd服务单元文件中的一个指令,它指定了服务单元所依赖的其他单元。具体来说,network.target 是一个systemd的单元,表示网络服务已经启动并可用。
Restart=always 意味着当服务意外退出(即非正常退出)时,systemd会自动尝试重新启动该服务。
WantedBy=multi-user.target 是systemd服务单元文件中的一个指令,它定义了服务的启动级别(run level)。在systemd中,系统的启动级别通过一个称为 target 的单元来表示。multi-user.target 是系统的多用户运行级别,通常用于大多数服务器环境,表示系统已经启动到了可以提供多用户登录和运行多个服务的阶段。WantedBy=multi-user.target 指定了MySQL服务的启动级别,并告诉systemd在系统启动到多用户运行级别时启动MySQL服务。
重新加载systemd管理器配置
创建完服务单元文件后,需要通知systemd重新加载它的配置,以便识别到新的MySQL服务单元。
systemctl daemon-reload
使用systemd管理mysql
启动:systemctl start mysql
停止:systemctl stop mysql
开机自启:systemctl enable mysql
取消开机自启:systemctl disable mysql
查看状态:systemctl status mysql
配置mysql systemd选项
这个配置不是必须的,一般不配置
可以在
/etc/systemd/system/mysqld.service.d目录下创建一个配置文件,用于systemd管理mysql启用停止等操作的选项。
创建目录
mkdir -p /etc/systemd/system/mysqld.service.d
创建配置文件override.conf
systemd的override.conf 配置选项与my.cnf中的选项参数不一样,不能相互使用。配置文件的参数可以配置如下参数。注意这里是配置systemd启动mysql时使用的参数。
[Service]
LimitNOFILE=max_open_files
PIDFile=/path/to/pid/file
Nice=nice_level
LimitCore=core_file_limit
Environment="LD_PRELOAD=/path/to/malloc/library"
Environment="TZ=time_zone_setting"
说明:
PIDFile:指定进程 ID 文件
LimitNOFILE:设置 MySQL 服务器可用的文件描述符的数量
LimitCore:设置最大核心文件大小。
Nice:设置 MySQL 服务器的调度优先级
Environment:一些 MySQL 参数是使用环境变量配置的。
LD_PRELOAD:设置内存分配库。
TZ:设置默认时区。
systemd重新加载配置
systemctl daemon-reload