MySQL5.7.21在Linux下安装教程
本文主要介绍怎么在Linux下安装MySQL5.7.21,需要准备的环境有:
- CentOS 6.9
- mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz
卸载旧版mysql
- 查看rpm包
rpm -qa|grep mysql
- 卸载mysql
rpm -e --nodeps mysql-libs-5.1.73-8.el6_8.x86_64
- 查找mysql残留包,有则删除,没有则忽略
find / -name mysql
解压安装包
- 解压
tar -zxvf mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz
- 移动并重命名至local文件夹下(可选,任意目录均可)
mv mysql-5.7.21-linux-glibc2.12-x86_64 /usr/local/mysql
创建用户组及用户
- 创建用户组
groupadd mysql
- 创建用户
useradd -r -g mysql -s /bin/false mysql
或useradd -r -g mysql mysql
Because the user is required only for ownership purposes, not login purposes, the useradd command uses the -r and -s /bin/false options to create a user that does not have login permissions to your server host. Omit these options if your useradd does not support them.—— [ MySQL 5.7 ]
MySQL官网中注释到使用到的mysql用户仅用于所有权控制而非登录,所以可以使用-r及-s来避免用户登录。若系统不支持改参数则可以忽略。
安装MySQL
- 修改工作目录权限
cd /usr/local/mysql
chown -R mysql:mysql ./
- 拷贝my.cnf文件到etc目录下
自5.7.18之后就不在提供my-default.cnf文件,为了使用更丰富的参数设置,这里我们提供默认的一些内容,之后可以根据需要自行添加所需参数,如下:
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It‘s a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
[mysqld]
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# These are commonly set, remove the # and set as required.
# basedir = .....
# datadir = .....
# port = .....
# server_id = .....
# socket = .....
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
拷贝以上内容,在etc目录下新建my.cnf,并粘贴内容即可,其中socket所在目录/var/lib/mysql
需要创建以及mysql用户权限,使用chown赋权限即可
- 执行安装,进入bin目录下
mysqld --initialize --user=mysql
或--initialize-insecure --user=mysql
前者会随机生成一个密码,后者不会,此处使用前者
此处初始密码为vKsJ>awXO0&B
- 修改目录权限,进入mysql目录
chown -R root:root ./
chown -R mysql:mysql data
启动MySQL服务
- 拷贝mysql服务,进入mysql目录
cp support-files/mysql.server /etc/init.d/mysql
如果mysql.server不是可执行文件,则需要使用chmod命令赋值
- 注册开机启动服务
chkconfig --add mysql
`chkconfig --list
- 启动mysql服务
service mysql start
- 链接socket文件至/tmp/目录下
ln -s /var/lib/mysql/mysql.sock /tmp/
- 添加mysql命令快捷访问
ln -s /usr/local/mysql/bin/mysql /usr/bin/
- 使用初始密码登录mysql服务
mysql -u root -p
- 更新密码
alter user 'root'@'localhost' identified by 'root';
flush privileges;
- 开启远程连接权限
update user set host='%' where user='root';
flush privileges;
或者
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
其中%可以替换成指定主机ip,identified by后跟密码
flush privileges;
注意事项
- mysql5.7安装包中已经没有scripts文件夹,所有命令均在bin目录下,所以使用./scripts/mysql_install_db命令来初始化无效,可以改用./mysqld –initialize –user=mysql
- my.cnf文件中的socket所在目录
/var/lib/mysql
需要提前创建并赋予mysql权限,否则会出现无法创建socket文件的错误 - 执行./mysqld –initialize命令时可能报如下错误
通过安装libaio、numactl包来解决,yum install libaio numactl -y
- 初次登录时可能会出现以下错误
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
只需将socket文件链接过去即可
ln -s /var/lib/mysql/mysql.sock /tmp/