CentOS8.0下安装MySQL5.7.32
一、MySQL简介
针对不同的用户,MySQL 分为两个版本:
- MySQL Community Server(社区版):该版本完全免费,但是官方不提供技术支持。
- MySQL Enterprise Server(企业版):该版本能够以很高的性价比为企业提供数据仓库应用,支持 ACID 事物处理,提供完整的提交、回滚、崩溃恢复和行级锁定功能,但是该版本需要付费使用,官方提供电话技术支持。
二、MySQL的安装
Linux下MySQL安装有三种方法,分别是:
- 使用二进制包进行安装;
- 使用rpm包进行安装
- 源码编译安装。
1、下载mysql二进制安装包
下面我将分别使用二进制包与rpm安装包进行安装,操作系统是CentOS 8.0 64bit,接下来下载MySQL,下载地址:https://downloads.mysql.com/archives/community/,我们选择其中的一个版本下载:
下载完成之后。
2、上传、解压mysql压缩包
上传到CentOS8.0的的/usr/local文件夹下,然后使用tar命令解压该文件,
tar -zxvf mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz
解压后如下图:
重命名该文件夹为mysql
mv /usr/local/mysql-5.7.32-linux-glibc2.12-x86_64 /usr/local/mysql
如下图:
3、创建mysql数据目录
进入到mysql目录,由于mysql的5.7版本没有data目录,所以我们使用mkdir创建一个
mkdir data
如下图:
4、创建mysql用户组和用户
groupadd mysql //创建mysql用户组
useradd -r -s /sbin/nologin -g mysql mysql -d /usr/local/mysql/ //创建一个不能登录的mysql用户,同时添加到mysql组,登录系统是的初始目录是/usr/local/mysql/ 。
-s<shell> 指定用户登入后所使用的shell。
-g<群组> 指定用户所属的群组
-r 建立系统帐号。
-d<登入目录> 指定用户登入时的起始目录。
命令解释见:https://www.runoob.com/linux/linux-comm-useradd.html
如下图:
5、改变mysql目录权限,之前是root权限,现在设置成mysql权限
chown -R mysql:mysql /usr/local/mysql/ 将/usr/local/mysql/目录及下属子目录的拥有者设为 mysql,群体的使用者 mysql,如下图:
6、初始化数据库
进入mysql文件夹的bin文件夹,初始化数据库
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
7、把mysql放到本地系统服务中
cp -a ../support-files/mysql.server /etc/init.d/mysqld
8、设置mysql的配置文件
由于mysql内没有my-default.cnf 文件,直接编辑的 /etc/my.cnf文件,使用命令 vi /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql
port=3306
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
symbolic-links=0
max_connections=200
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=32M
explicit_defaults_for_timestamp=true
[mysqld_safe]
log-error=/var/log/mysql/mysql.log
pid-file=/var/run/mysql/mysql.pid
注意:mysql连接localhost通常通过一个Unix域套接字文件进行,一般是/tmp/mysql.sock,这个socket路径不要修改,不然连本地mysql的时候回报错:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'
因为my.cnf中配置了log-error、pid-file路径,因此需要在/var/log/、/var/run/创建mysql目录,并且给mysql用户全部的权限(chmod)
chmod -R 777 /var/log/mysql/
chmod -R 777 /var/run/mysql/
否则启动会报错,如下图:
9、启动mysql服务
service mysqld start
10、登陆mysql
cat /root/.mysql_secret 查看root账号的密码
注:使用cat /root/.mysql_secret查看的密码,尝试了多次依旧登录不上,不得已改变了其他办法登录,大家有通过这种方式登录的可以在下面留意,欢迎交流学习。
编辑/etc/my.cnf,在[mysql]下添加一行
skip-grant-tables
使其登录时跳过权限检查,登录成功以后,如下图:
11、修改登录密码
登录成功以后,修改密码,命令:SET PASSWORD FOR 'root'@localhost=PASSWORD('123456');
报错误:ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
先执行命令:flush privileges;
在修改密码,如下图:
修改/etc/my.cnf,注释掉skip-grant-tables,重新启动mysql
12、设置mysql开机自启动环境变量
配置mysql环境变量,修改/etc/profile文件,在最下方添加配置
vi /etc/profile
增加如下配置:
export PATH=$PATH:/usr/local/mysql/bin
立即生效
source /etc/profile
13、设置mysql开机自启动
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --list
如果看到mysql的服务,并且3,4,5都是on的话则成功,如果是off,则键入
chkconfig --level 345 mysqld on
然后重启电脑
reboot
查看mysql运行状态
service mysqld status
14、设置mysql允许远程登录
mysql -u root -p
use mysql;
update user set host = '%' where user = 'root';
FLUSH PRIVILEGES;
注:如果连接不上,注意是不是防火墙等3306端口没有开放。