安装步骤(本文以MySQL5.7.37为例)
预备操作
- 官方网站下载安装包,同时可以下载一下xftp进行文件传输
- 解决软件的依赖关系
yum install cmake ncurses-devel gcc gcc-c++ vim lsof bzip2 openssl-devel ncurses-compat-libs -y - 解压mysql二进制安装包
tar xf mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz - 移动mysql解压后的文件到/usr/local下改名叫mysql
mv mysql-5.7.37-linux-glibc2.12-x86_64 /usr/local/mysql
新建组和用户,方便赋权限
- 新建mysql组
groupadd mysql
- 新建mysql用户,指定属组为mysql,并且指定这个用户的shell是/bin/false,最严格的nologin
useradd -r -g mysql -s /bin/false mysql
关闭firewalld、selinux
- 关闭firewalld防火墙服务,并且设置开机不要启动
service firewalld stop
systemctl disable firewalld - 永久关闭selinux,使用sed替换直接生效到文件
sed -i ‘/^SELINUX=/ s/enforcing/disabled/’ /etc/selinux/config
建一个目录用于存放数据,并设权限
- 建目录
mkdir /data/mysql -p
- 设权限,使得这个目录归mysql组和mysql用户所有其他人都不能访问,这样mysql用户就可以对这个文件进行读写了
chown mysql:mysql /data/mysql/
chmod 750 /data/mysql/
初始化mysql
- 进入/usr/local/mysql/bin目录
cd /usr/local/mysql/bin/ - 初始化mysql,初始化之后会得到一个临时密码,要先记住这个密码用于第一次登入,所以直接将初始化得到的数据重定向到passwd.txt文件里
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql &>passwd.txt
- 截取临时密码,设置一个变量保存临时密码
tem_passwd=$(cat passwd.txt |grep “temporary”|awk ‘{print $NF}’)
ssl登入
- 让mysql支持ssl方式登录的设置
./mysql_ssl_rsa_setup --datadir=/data/mysql/
修改PATH变量
- 永久修改PATH变量,重启后失效
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 - 修改/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
- 修改内核的open file的数量
ulimit -n 1000000 - 设置开机启动的时候也配置生效
echo “ulimit -n 1000000” >>/etc/rc.local
chmod +x /etc/rc.d/rc.local
启动MySQL进程
service mysqld start
- 将mysqld添加到linux系统里服务管理名单里(旧系统的设置方式)
/sbin/chkconfig --add mysqld - 设置mysqld服务开机启动
/sbin/chkconfig mysqld on - 登入(初次修改密码需要使用–connect-expired-password 选项,e 后面接的表示是在mysql里需要执行命令 execute 执行,set password=‘123abc*’; 修改root用户的密码为123abc*)
mysql -uroot -p$tem_passwd --connect-expired-password -e "set password=‘123abc*’;
登入
mysql -uroot -p’123abc*’ -e “show databases;”