下载mysql5.7
1.创建存放目录,我是在根目录创建的study
cd /
mkdir study
复制下载地址 https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
cd study
下载
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
解压
tar -zxvf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
在 /usr/local 目录下创建mysql文件夹
mkdir /usr/local/mysql
把刚解压出来的mysql-5.7.31-linux-glibc2.12-x86_64下的所有文件移动到/usr/local/mysql文件夹下
mv mysql-5.7.31-linux-glibc2.12-x86_64/* /usr/local/mysql
结果如下图
添加mysql用户组和mysql用户
groupadd mysql
useradd -r -g mysql mysql
从5.7.18开始不在二进制包中提供my-default.cnf文件,所以这里要查看一下mysql对于配置文件的查找路径,越左优先级越高
进入mysql的bin目录
cd /usr/local/mysql/bin
./mysql --help | grep 'Default options' -A 1
创建etc目录
mkdir /usr/local/mysql/etc
创建配置文件
touch /usr/local/mysql/etc/my.cnf
编辑配置文件
vi /usr/local/mysql/etc/my.cnf
写入下面内容
[client]
port=3306
[mysql]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
explicit_defaults_for_timestamp=true
skip-grant-tables
port=3306
socket=/var/lib/mysql/mysql.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
max_allowed_packet=16M
设置开机启动
复制启动脚本到/etc/rc.d/init.d/目录
cd /usr/local/mysql
cp ./support-files/mysql.server /etc/rc.d/init.d/mysql
增加 mysql 服务控制脚本执行权限
chmod +x /etc/rc.d/init.d/mysql
将 mysql 服务加入到系统服务
chkconfig --add mysql
检查mysqld服务是否已经生效
chkconfig --list mysql
初始化数据库
cd /usr/local/mysql/bin
./mysqld --initialize --console
启动mysql
service mysql start
启动报错:/var/log/mariadb/mariadb.log日志文件不存。那么创建
mkdir /var/log/mariadb
touch /var/log/mariadb/mariadb.log
# 用户组及用户
chown -R mysql:mysql /var/log/mariadb/
再次启动 service mysql start
又报错了/var/lib/mysql目录不存,那么再次创建
mkdir /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql
因为mysql会在/usr/local/mysql/data目录创建pid文件,所以给mysql用户写入权限
chown -R mysql:mysql /usr/local/mysql/data
再次启动
service mysql start
成功!
再配置一下环境变量
vim /etc/profile
53 PATH=$PATH:/usr/local/mysql/bin
54 export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
刷新
source /etc/profile
检测
echo $PATH
设置mysql密码
mysql
mysql> use mysql;
mysql> update user set authentication_string=PASSWORD('root') where User='root'; #密码为root
mysql> exit;
修改my.cnf
vim /usr/local/mysql/etc/my.cnf
注释skip-grant-tables这一行
重启mysql
service mysql restart
再次进入mysql刷新权限
mysql -uroot -p
输入刚刚设置的密码
mysql> alter user 'root'@'localhost' identified by 'root';
设置mysql远程访问
mysql> grant all privileges on *.* to root@'%' identified by "root";
mysql> flush privileges;
如果提示请修改初始密码,要执行
alter user user() identified by "root"; #密码为root
-- 配置远程访问
-- 防火墙端口设置,便于远程访问
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
-- 查看端口
firewall-cmd --list-ports
启动防火墙服务:systemctl ummask firewalld
启动防火墙:systemctl start firewalld