本文由于是学习,所以使用tar包安装,Linux版本CentOS8,MySQL8,本次安装路径为/usr/local/mysql
下载&准备
官方下载地址注意选择对应的系统以及版本,本人选择的这个版本是通用的版本。
下载后将文件上传至Linux上面,使用mv命令移动至下面文件里面。
按照下面命令获取到文件里面的东西,上面为我自己操作的路径。
yum install -y libaio # 安装所需依赖
xz -d mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz # 解压xz文件,解压出来后是tar文件
tar -xvf mysql-8.0.27-linux-glibc2.12-x86_64.tar # 解压tar文件
rm -rf mysql-8.0.27-linux-glibc2.12-x86_64.tar # 删除安装包
ln -s mysql-8.0.27-linux-glibc2.12-x86_64/ mysql8 # 创建一个软连接,原名太长不方便
mkdir log # 创建一个log文件夹,以后使用
mkdir data # 创建一个存放数据库数据的文件夹,之后使用
touch /usr/local/mysql/log/mysql.log # 创建一个log文件
chmod +777 /usr/local/mysql/log/mysql.log # 给这个log文件权限
配置
配置MySQL,大部分使用默认配置即可
vim /etc/my.cnf # 创建文件,并进行MySQL的配置
# 以下为文件里面的配置
[mysqld]
# 设置mysql的安装目录
basedir=/usr/local/mysql/mysql8
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data
# 日志文件
log-error=/usr/local/mysql/log/mysql.log
# 设置最大连接数
max_connections=500
# 配置表名不区分大小写 1:不区分大小写 0:区分大小写 这行必须配置 默认表名是区分大小写的,不利于开发
lower_case_table_names=1
# 设置为默认编码为utf8
character-set-server=utf8mb4
cd /usr/local/mysql/mysql8/bin/ # 进入MySQL文件
./mysqld --initialize --console --user=root # 初始化MySQL
cat /usr/local/mysql/log/mysql.log # 查看MySQL默认的密码
配置用户
groupadd mysql # 创建MySQL组
useradd -r -g mysql mysql # 创建MySQL用户
chown -R mysql.mysql /usr/local/mysql/data/ # 配置MySQL用户访问此文件的权限
优化启动
cp /usr/local/mysql/mysql8/support-files/mysql.server /etc/init.d/mysql # 将启动文件复制到此文件中
chmod +x /etc/init.d/mysql # 添加可执行权限
chkconfig --add mysql # 注册启动服务(配置systemctl)
chkconfig --list # 查看是否注册上
这样的话就可以使用systemctl命令进行启动了
ln -s /usr/local/mysql/mysql8/bin/mysql /usr/bin/ # 建立软连接,在系统中增加mysql指令 (配置快捷方式)
systemctl start mysql # 使用systemctl命令启动MySQL,此处如果启动不了检查/tmp/目录下sock文件,将MySQL有关的都删除
systemctl status mysql # 查看MySQL的状态
mysql -u root -p # 启动MySQL,此处报错
mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
解决:
ln -s /usr/lib64/libtinfo.so.6.1 /usr/lib64/libtinfo.so.5
进入MySQL后
问题:
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
解决:
此处需要重置密码
alter user user() identified by "nKW=?rQDj6%<5"; # 重置密码
create user 'root'@'%' identified by "nKW=?rQDj6%<5"; # 创建一个远程账户 ‘%’
grant all on *.* to 'root'@'%'; # 权限分配
FLUSH PRIVILEGES; # 权限刷新
这时可以使用图形化界面连接了,如果出现Authentication plugin ‘caching_sha2_password’ cannot be loaded的错误,请查看这篇文章,我的navicat版本是15所以不会出现这种情况。
ERROR 2003 (HY000): Can’t connect to MySQL server on ‘x.x.x.x:3306’ (113)
如果出现以上问题,请仔细检查自己的防火墙是否关闭firewalld,如果是云服务器需检查服务器控制台是否开启3306端口,同时注意关闭firewalld。
自动化
本人将以上的所有命令与shell文件结合制作了一个自动安装的脚本,此脚本先清理本身的mysql然后再安装自己的,不过还是需要下载MySQL包的,看上面的流程先将MySQL下载上传到Linux上面,然后将脚本放在和MySQL包一个目录下面。
下面为执行自动化脚本的输出,资源下载。