Linux 安装 MySQL
Linux安装MySQL
这里我们安装的mysql版本位 5.7,服务器操作系统是CenOS7.x
一、源码编译安装
官方文档:https://dev.mysql.com/doc/refman/5.7/en/
1、下载源码
下载地址:https://downloads.mysql.com/archives/community/
选择你需要的版本,例如下图所示:

提示
这里可以看到有两个版本的包,其中mysql-boost包是增加了 Boost C++ 库的支持,这个包中包含了 MySQL 5.7.25 的源代码和 Boost C++ 库的源代码;我们使用 mysql-5.7.25.tar.gz 也是需要下载 boots 的后面会说到
eg:
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.25.tar.gz
2、解压
tar zxvf mysql-5.7.25.tar.gz
解压后的文件

3、安装依赖
注意
mysql 在5.5之后就使用cmake进行编译
yum install -y make cmake ncurses-devel gcc gcc-c++
4、创建用户和用户组
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
5、创建目录 && 给用户赋权限
说明
目录都可以自己定义,不一定要和我这里一样
# mysql 数据保存目录
mkdir -p /opt/mysql/data
# mysql 日志目录
mkdir -p /opt/mysql/logs
chown mysql:mysql -Rf /opt/mysql/data
chmod -R 770 /opt/mysql/data
chown mysql:mysql -Rf /opt/mysql/logs
6、编译选项
先创建一个目录,在目录中编译
mkdir build
cd build
编译选项内容
cmake .. \
-DCMAKE_INSTALL_PREFIX=/opt/mysql \
-DMYSQL_DATADIR=/opt/mysql/data \
-DWITH_BOOST=boost \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DENABLE_DOWNLOADS=1 \
-DDOWNLOAD_BOOST=1
完整的cmake选项文档:https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html#option_cmake_enabled_local_infile
7、编译
make
make install
解释
MySQL编译占用的内存比较大所以建议一步步执行,这一步也是耗时比较长的需要耐心等候
编译完成后会在你的安装目录生成对应的文件,结构如下:
/opt/mysql
|-- bin # 二进制文件在这个里面
|-- COPYING
|-- COPYING-test
|-- data
|-- docs
|-- include
|-- lib
|-- logs
|-- man
|-- mysql-test
|-- README
|-- README-test
|-- share
|-- support-files
`-- systemd
8、初始化 && 启动
1、初始化mysql
/opt/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/opt/mysql --datadir=/opt/mysql/data
根据你的安装路径找到 mysqld 这个二进制文件,--basedir是安装路径,--datadir是数据保存路径
2.尝试启动mysql
# 启动
sudo /opt/mysql/support-files/mysql.server start
# 停止
sudo /opt/mysql/support-files/mysql.server stop
之所以说尝试是因为多数情况下我们都又可能启动失败,例如如下报错
[root@VM-0-8-centos build]# /opt/mysql/support-files/mysql.server start
Starting MySQL.2023-03-24T16:02:17.939382Z mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.
ERROR! The server quit without updating PID file (/var/lib/mysql/VM-0-8-centos.pid).
出现这些问题我们需要做两件事情:
1、修改配置文件
vim /etc/my.cnf
# 修改或增加如下内容(根据你自己的安装路径来)
[mysqld]
datadir=/opt/mysql/data
socket=/tmp/mysql.sock
pid-file=/opt/mysql/data/mysql.pid
log-error=/opt/mysql/logs/error.log
sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION # 支持分组查询
# 同时我们看到下面有个[mysqld_safe];所以要进行第二步操作
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
2、创建对应的文件
sudo mkdir /var/log/mariadb/
sudo touch /var/log/mariadb/mariadb.log
sudo chown mysql:mysql /var/log/mariadb/mariadb.log
sudo chmod 666 /var/log/mariadb/mariadb.log
sudo touch /opt/mysql/data/mysql.pid
修改完毕后再启动就可以啦
9、mysql基本设置
现在可以使用MySQL命令行进入MySQL试试了
/opt/mysql/bin/mysql -uroot
此时是不需要密码的
10、配置 systemd 运行
mysqld.service文件示例:
[Unit]
Description=MySQL Server
After=network.target
[Service]
User=mysql
Group=mysql
ExecStart=/opt/mysql/bin/mysqld --defaults-file=/etc/my.cnf
PIDFile=/opt/mysql/data/mysql.pid
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
其他的就不多讲了,都是轻车熟路了
二、二进制安装
待补充 ~
三、Docker安装
待补充 ~