跳至主要內容

Linux 安装 MySQL

逸尘.Lycodx大约 3 分钟后端工具安装mysqllinux

Linux安装MySQL

这里我们安装的mysql版本位 5.7,服务器操作系统是CenOS7.x

一、源码编译安装

官方文档:https://dev.mysql.com/doc/refman/5.7/en/open in new window

1、下载源码

下载地址:https://downloads.mysql.com/archives/community/open in new window

选择你需要的版本,例如下图所示:

提示

这里可以看到有两个版本的包,其中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_infileopen in new window

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安装

待补充 ~

上次编辑于: