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内容为:
- 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