Linux之 Centos7.x上安装mysql5.7.x
最近沉迷于Linux的学习,想试着部署一下自己写的项目,于是乎先要配置好环境,这篇就来讲讲我是怎么配置MySQL环境的
下载MySQL
去官网选择合适的下载
传输到远程服务器
1.新建目录 data ,将下载好的MySQL压缩包上传到新建的 data 文件夹中
# cd /
# mkdir data
2.上传操作
下载xftp,连接远程服务器,直接拖拽上传到 data 文件下
安装MySQL
安装前环境准备
查看操作系统版本
查看当前系统版本,是否与下载的MySQL版本相符
# cat /etc/redhat-release
查看是否安装过mysql
1.首先检测Linux操作系统中是否安装了MySQL:
# rpm -qa | grep -i mysql
2.如果有信息出现,则进行删除,命令如下卸载:
# rpm -e --nodeps 包名
注意:卸载后 /var/lib/mysql 中的数据及 /etc/my.cnf 不会删除,确定没用后就手工删除:
# rm -f /etc/my.cnf # rm -fr /var/lib/mysql
3.查看旧的mysql安装目录
# whereis mysql
4.删除旧的安装目录
# rm -rf 目录名
5.删除完毕后,才能进行安装,否则安装会出错
安装MySQL
解压安装包
进入 /data 将之前上传好的安装包解压,并命名为mysql
# cd /data # tar -zxvf 安装包 -C /data/ # mv mysql-5.7.xx-linux-glibc2.12-x86_64 mysql
进入mysql,创建data文件夹
配置安装
1.查看mysql用户或用户组是否存在
# id mysql
2.如果存在,需删除用户组和用户
# groupdel mysql
# userdel -f mysql
3.添加mysql用户组和用户
创建mysql组
# groupadd mysql
查看是否创建成功
# cat /etc/group | grep mysql
创建mysql用户 # useradd -r -g mysql mysql 查看是否创建成功 # cat /etc/passwd | grep mysql
4.给mysql用户设置密码
# passwd mysql
5.给mysql授权(读、写、执行)
# chown -R mysql:mysql /data/mysql # chmod -R 775 /data/mysql
6.配置my-default.cnf配置文件
进入 mysql/support-files 文件夹的内容,查看是否有 my-default.cnf 配置文件,若没有默认的配置文件,则需手动创建一个 my-default.cnf 配置文件,并添加配置内容
# cd /data/mysql/support-files/
编辑my-default.cnf配置文件 # vi my-default.cnf
编辑内容如下(进入编辑页面,按 i 可编辑修改,按ctrl+c退出,然后 :wq 保存修改)
[client] port = 3306 socket = /tmp/mysql.sock [mysqld] # mysql存放的位置 basedir = /data/mysql # data存放的位置 datadir = /data/mysql/data bind-address = 0.0.0.0 port = 3306 socket = /tmp/mysql.sock skip-external-locking key_buffer_size = 128M max_allowed_packet = 1M table_open_cache = 256 sort_buffer_size = 1M read_buffer_size = 1M read_rnd_buffer_size = 2M myisam_sort_buffer_size = 8M thread_cache_size = 8 query_cache_size= 16M max_connections = 213 wait_timeout = 31536000 interactive_timeout = 30 max_connect_errors = 9 long_query_time = 1 tmp_table_size = 16M #log-bin=mysql-bin #binlog_format=mixed #server-id = 1 lower_case_table_names = 1 [mysqldump] quick max_allowed_packet = 8M [mysql] no-auto-rehash [myisamchk] key_buffer_size = 12M sort_buffer_size = 1M read_buffer = 1M write_buffer = 1M [mysqlhotcopy] interactive-timeout
7.重新授权mysql
# chown -R mysql:mysql /data/mysql # chmod -R 775 /data/mysql
8.增加配置文件到/etc下
复制 support-files 文件下的 my-default.cnf 文件到 /etc/my.cnf 下
# cp my-default.cnf /etc/my.cnf
复制 mysql.server 文件下的 my-default.cnf 文件到 /etc/init.d/mysqld 下
# cp mysql.server /etc/init.d/mysqld
9.编辑 mysqld ,修改为mysql的指定路径
# vi /etc/init.d/mysqld
修改内容:
basedir=/data/mysql datadir=/data/mysql/data then basedir=/data/mysql datadir=/data/mysql/data if test -Z "$datadir" then datadir=/data/mysql/data fi sbindir=/data/mysql/bin libexecdir=/data/mysql/bin
9.添加mysql环境变量
# vi /etc/profile
文件末尾添加: export MYSQL=/data/mysql export path=$MYSQL/bin:
10.修改后重新生效环境变量
# source /etc/profile
11.初始化数据库操作
# cd /data/mysql/bin
# ./mysqld --basedir=/data/mysql --user=mysql --datadir=/data/mysql/data --initialize
- 如果报 error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory 错误,就需要 安装libaio
libaio安装命令
# yum install libaio
- 如果报 [ERROR] --initialize specified but the data directory has files in it. Aborting 错误,说明已经执行过一次,需要把 /data/mysql/data 目录删除,重新创建重新授权
# cd /data/mysql # rm -rf data # mkdir data # chown -R mysql:mysql /data/mysql # chmod -R 775 /data/mysql
然后再执行初始化数据库操作
# cd /data/mysql/bin
# ./mysqld --basedir=/data/mysql --user=mysql --datadir=/data/mysql/data --initialize
12.启动mysql服务
# service mysqld start
修改密码
1.关闭mysql服务
# service mysqld stop
2.把 mysql/bin/mysqld_safe 中 usr/local/mysql 换成指定安装的路径名,然后执行下面命令
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
3.此时已经进入免过滤状态,修改root密码
(注:5.6版本user表中密码字段是password,5.7之后改为authentication_string,不再有password)
# mysql # use mysql; # update user set authentication_string=PASSWORD('root') where user='root'; # flush privileges; # exit;
4.第一次登录,还要再次设置密码,修改之后才会创建成功,不然会报 ERROR 1820 (HY000): You must reset your password using ALTER USER statement 错误
# mysql -u root -p # alter user 'root'@'localhost' identified by 'root'; # flush privileges; # exit;
远程连接登录
1.确保3306端口以开放
# show global variables like 'port'
(若不是3306端口可进行修改mysql端口号,# vi /etc/my.cnf 命令进入修改 port=3306 ,保存并重启 # service mysqld restart)
2.确保防火墙关闭
CentOS7.x 默认的防火墙是firewalle(CentOS6.x默认防火墙是iptables)
查看防火墙状态(关闭显示not running,开启显示running) # firewall-cmd --state 停止防火墙firewall # systemctl stop firewalld.service 禁止防火墙firewall开机启动(一般用这个) # systemctl disable firewalld.service
3.修改远程连接权限
不修改的话,远程无法连接上
修改user表中root用户的host,修改后重启服务
# mysql -uroot -p # use mysql; # update user set host='%' where user='root'; # exit; # service mysqld restart
4.添加阿里云安全组
设置mysql开机自启动
# chkconfig mysqld on