Linux安装MySQL数据库(使用二进制文件)
本文档用于安装mysql-5.7.x版本,使用centOS7系统,最下方有写好的安装脚本
- 下载二进制压缩包:下载链接。选择5.7.x版本。
- 选择版本
- 安装相应依赖软件
yum install cmake ncurses-devel gcc gcc-c++ vim lsof bzip1 openssl-devel ncurses-compat-libs net-tools lrzsz -y
- 将之前下载的mysql压缩包导入Linux系统并解压
# 由于文件较大耗时较久
# 传送文件可以使用xftp,或者使用rz命令等方法
tar xf mysql-5.7.x-linux-glibc2.12-x86_64.tar.gz
- 将源码文件放置在
/usr/local/mysql
,一般将应用放置在/usr
mv mysql-5.7.x-linux-glibc2.12-x86_64 /usr/local/mysql
- 创建mysql组
groupadd mysql
- 创建mysql用户,-r创建为系统用户,该用户不允许登录,专门用来启动MySQL服务
useradd -r -g mysql -s /bin/false mysql
- 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
- 关闭seLinux
setenforce 0
sed -i '/^SELINUX=/ s/enforcing/disbaled/' /etc/selinux/config
- 创建数据存储路径,并修改文件所有者和权限
mkdir /data/mysql -p
chown mysql:mysql /data/mysql
chmod 750 /data/mysql
- 进入
/usr/local/mysql/bin
cd /usr/local/mysql/bin
- 启动mysqld服务(第一次启动mysqld服务时会产生一个临时密码,这里将其所有输出到了password.txt)
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql &> password.txt
- password.txt内容为:
- 让MySQL支持ssl方式登录的设置
./mysql_ssl_rsa_setup --datadir=/data/mysql/
- 获得临时密码
```shell
tem_passwd=$(cat password.txt | grep "temporary" | awk '{print $NF}')
```
- 导出mysql为环境变量,并且进行永久设置
export PATH=/usr/local/mysql/bin:$PATH
# 设置全局永久环境变量,可根据个人设置为单个用户
# echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
echo 'PATH=/usr/local/mysql/bin:$PATH' >> /root/.bashrc
- 复制support-files里的mysql.server文件到/etc/init.d目录下叫mysqld,并修改datadir值
cp ../support-files/mysql.server /etc/init.d/mysqld
sed -i '70c datadir=/data/mysql' /etc/init.d/mysqld
- 生成/etc/my.cnf配置文件
cat > /etc/my.cnf << EOF
[mysqld_safe]
[client]
socket=/data/mysql/mysql.sock
[mysqld]
socket=/data/mysql/mysql.sock
port=3306
open_files_limit=8192
innodb_buffer_pool_size=512M
character-set-server=utf8
[mysql]
auto-rehash
prompt=\\u@\\d \\R:\\m mysql>
EOF
- 修改内核参数以满足mysql运行
ulimit -n 1000000
echo "ulimit -n 1000000" >> /etc/rc.local
chmod +x /etc/rc.d/rc.local
- 设置mysqld开机自启动
systemctl enable mysqld
systemctl start mysqld
# 下列命令和上述命令相同效果
/sbin/chkconfig --add mysqld
/sbin/chkconfig mysqld on
systemctl start mysqld
- 进入mysql服务,由于第一次使用时必须改掉临时密码,并且第一次进行修改密码时应当使用
--connect-expired-password
参数
# -u指定用户,-p指定密码,-e后接在mysql中执行的命令,此处为设置密码
# 不修改密码可以进入mysql服务,但是一旦使用命令就提醒修改密码
mysql -uroot -p$tem_passwd --connect-expired-password -e "set password='123456';"
- 运行一条命令检验结果
mysql -uroot -p'123456' -e "show databases;"
将上述命令写成安装脚本
- 在Linux中准备好5.7.x的压缩文件,然后创建文件mysql.sh,放在同一文件下
- 在mysql.sh复制下列内容,记得改版本号(脚本中为5.7.41)
#!/bin/bash
# 安装依赖以及工具
yum install cmake ncurses-devel gcc gcc-c++ vim lsof bzip1 openssl-devel ncurses-compat-libs net-tools -y
# 解压mysql源码文件
tar xf mysql-5.7.41-linux-glibc2.12-x86_64.tar.gz
# 将源码文件放置在/usr/local/mysql
mv mysql-5.7.41-linux-glibc2.12-x86_64 /usr/local/mysql
# 创建mysql组
groupadd mysql
# 创建mysql用户,-r创建为系统用户,该用户不允许登录,专门用来启动MySQL服务
useradd -r -g mysql -s /bin/false mysql
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭seLinux
setenforce 0
sed -i '/^SELINUX=/ s/enforcing/disbaled/' /etc/selinux/config
# 创建数据存储路径
mkdir /data/mysql -p
# 修改文件所有者,以及文件权限
chown mysql:mysql /data/mysql
chmod 750 /data/mysql
# 进入/usr/local/mysql/bin
cd /usr/local/mysql/bin
# 启动mysqld服务
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql &> password.txt
# 让MySQL支持ssl方式登录的设置
./mysql_ssl_rsa_setup --datadir=/data/mysql/
# 获得临时密码
tem_passwd=$(cat password.txt | grep "temporary" | awk '{print $NF}')
# 导出mysql为环境变量
export PATH=/usr/local/mysql/bin:$PATH
# 导出为永久的环境变量
# echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
echo 'PATH=/usr/local/mysql/bin:$PATH' >> /root/.bashrc
# 复制support-files里的mysql.server文件到/etc/init.d目录下叫mysqld
cp ../support-files/mysql.server /etc/init.d/mysqld
# 修改datadir值
sed -i '70c datadir=/data/mysql' /etc/init.d/mysqld
# 生成/etc/my.cnf配置文件
cat > /etc/my.cnf << EOF
[mysqld_safe]
[client]
socket=/data/mysql/mysql.sock
[mysqld]
socket=/data/mysql/mysql.sock
port=3306
open_files_limit=8192
innodb_buffer_pool_size=512M
character-set-server=utf8
[mysql]
auto-rehash
prompt=\\u@\\d \\R:\\m mysql>
EOF
# 修改内核参数
ulimit -n 1000000
echo "ulimit -n 1000000" >> /etc/rc.local
chmod +x /etc/rc.d/rc.local
# 将mysql添加到Linux系统服务管理名单里
/sbin/chkconfig --add mysqld
# 设置mysqld服务开机启动
/sbin/chkconfig mysqld on
# 启动mysql服务
systemctl start mysqld
# 第一次使用mysql时必须修改密码,且第一次修改密码必须使用--connect-expired-password参数
# -e后面接的表示是在mysql里需要执行命令,execute执行
# set表示修改密码
mysql -uroot -p$tem_passwd --connect-expired-password -e "set password='123456';"
# 检验上一步操作结果
mysql -uroot -p'123456' -e "show databases;"
- 运行mysql.sh脚本
bash mysql.sh
# 最后需要重新登录更新环境变量
su