阿里云Centos服务器搭建mysql8.0.25

一、下载和解压

官网下载:
点击直接下载mysql8.0.25,不过下载有的慢,可能被限速了
下完之后,你会得到一个文件名为mysql-8.0.25-linux-glibc2.12-x86_64.tar.xz,这是一个二次压缩的mysql,需要进行xz -d xxx解压成 xxx.tar 再用tar xvf xxx解压就完成一半了,我把它解压到/usr/local/mysql-8.0.25
解压完之后:
阿里云Centos服务器搭建mysql8.0.25_第1张图片
如果出现

xz: mysql-8.0.25-linux-glibc2.12-x86_64.tar.xz: Compressed data is corrupt

一般是压缩包有问题,重新下载吧
废话不多说

二、初始化mysql

第一步:

新建空文件夹data

mysql8.0.25目录下

mkdir ./data

创建用户及用户组

groupadd mysql
useradd -g mysql mysql

命令解释:
useradd:添加用户,比如root用户
-g mysql:-g顾名思义group的首字母,即添加的用户属于mysql用户组,mysql是上一步创建的用户组
mysql:添加的用户名

授权

chown -R mysql.mysql /usr/local/mysql-8.0.25/

命令解释:

-R:处理指定目录及其子目录下所有文件
mysql.mysql:用户组.用户

第二步:

初始化数据库

 pwd
/usr/local/mysql-8.0.25

在该目录下执行

./bin/mysqld --user=mysql --basedir=/usr/local/mysql-8.0.25/ --datadir=/usr/local/mysql-8.0.25/data/ --initialize

执行结果

2021-07-23T18:32:47.361968Z 0 [System] [MY-013169] [Server] /usr/local/mysql-8.0.25/bin/mysqld (mysqld 8.0.25) initializing of server in progress as process 2301
2021-07-23T18:32:47.373835Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2021-07-23T18:32:50.746203Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2021-07-23T18:32:52.712979Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: n9RxKB3rtX%1

最后一行的字符串为临时密码:n9RxKB3rtX%1
如果初始化出现缺少依赖库,就按照提示用yum安装依赖库即可

./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory

在linux上安装mysql的时候出现错误,意思就是缺少libaio这个软件。

  • ubuntu版本:
sudo apt-get install libaio-dev
  • CentOS或者redcat版本
yum install -y libaio

第三步:

配置文件

/etc/vim my.cnf

# my.cnf

[mysqld]
basedir=/usr/local/mysql-8.0.25
datadir=/usr/local/mysql-8.0.25/data
socket=/tmp/mysql.sock
character-set-server=utf8

建立mysql服务

/usr/local/mysql-8.0.25/support-files目录下

cp -a ./mysql.server /etc/init.d/mysql

命令解释:
cp -a:归档复制,常用于备份
mysql.server复制到/etc/init.d/目录下并更名为mysql

chmod +x /etc/init.d/mysql 
chkconfig --add mysql 

命令解释:
chmod +x:将普通文件变为可执行文件【变绿】
chmod -x:将可执行文件改成普通文件

查看/etc/init.d/mysql文件
可以发现有该注释 #chkconfig: 2345 64 36
等级0表示:表示关机
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动

chkconfig --list mysql:检查服务是否生效

三、启动和登录数据库

启动

service mysql start

查看状态

service mysql status

登录

mysql -uroot -p
-bash: mysql: command not found

原因:
mysql命令不是全局,需要到msql-8.0.25/bin/下的mysql使用,或者使用软连接将需要全局命令的命令连接到/usr/bin下,因为在该bin下,命令是具有全局性的

设置软连接

ln -s /usr/local/mysql-8.0.25/bin/mysql /usr/bin

再次登录成功!

修改密码

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';

修改配置文件

# my.cnf

# MySQL 配置文件,
#
# # 数据库目录 /data/mysql
 [client]
 port=3306
 # mysql socket 文件存放地址
 socket=/tmp/mysql.sock
 # 默认字符集
 default-character-set=utf8

 [mysqld]
 server-id=1
 # 端口
 port=3306
 # 运行用户
 user=mysql
 # 最大连接
 max_connections=200
 socket=/tmp/mysql.sock
 # mysql 安装目录(解压后文件的目录)
 basedir=/usr/local/mysql-8.0.25
 # 数据目录(这里放在我们新建的 /data/mysql 下)
 datadir=/data/mysql_data/data
 pid-file=/data/mysql_data/data/mysql.pid
 init-connect='SET NAMES utf8'
 character-set-server=utf8
 # 数据库引擎
 default-storage-engine=INNODB
 slow_query_log_file=/data/mysql_data/log/mysql-slow.log
 # 远程连接访问,低版navicate需要该注解,15-16 navicate请忽视
 default_authentication_plugin=mysql_native_password

 # 跳过验证密码
 #skip-grant-tables

 [mysqld_safe]
 log_error=/data/mysql_data/log/mysql-error.log

 [mysqldump]
 quick
 max_allowed_packet=16M
 EOF

为了考虑数据库安全性和方便管理,对数据文件进行迁移
/usr/local/mysql-8.0.25/data迁移到/data/mysql_data/data
步骤:
移动data目录及子目录所有文件

mv /usr/local/mysql-8.0.25/data /data/mysql_data/data

进入mysql_data目录

cd /data/mysql_data

在/data/mysql_data/log/目录下新建错误日志输出文件

mkdir log
touch log/mysql-error.log

结果如图:
在这里插入图片描述在这里插入图片描述在这里插入图片描述
上图中,除了data是迁移过来的,其他都要手动创建,全都创建完毕后,再更改目录用户权限,即图中红色方框用户组属关系

chown -R  mysql.mysql /data/mysql_data

注意:
上面那三个图中目录的权限更重要,涉及到mysqld_save免密登录时权限问题,下面详细讲

四、设置允许远程访问

登录myql
新建用户root@%作为其他远程访问的用户

create user root@'%' identified by 'root';

命令解释:
root:字段user
@作为分隔符
%:字段host
格式必须是user@'%' (亲测) 或者‘user’@‘%’
千万注意不能是’root@%'相当于用户名为root@%
图片演示:
阿里云Centos服务器搭建mysql8.0.25_第2张图片
#8.0密码规则

caching_sha2_password

#5.7密码规则

mysql_native_password

客户端navicate15之前的版本可能不支持mysql8.0的新加密特性,但很幸运的是navicate目前已经到了navicate 16
如果要让mysql有较好的兼容性——其他低配的navicate依旧可以链接mysql8.0,可以保留 default_authentication_plugin=mysql_native_password,代价就是降低安全性
建议尽量使用caching_sha2_password,这是mysql官方给的建议
阿里云Centos服务器搭建mysql8.0.25_第3张图片

修改远程用户的加密规则(plugin字段)并更新密码

  • mysql_native_password 弱加密
mysql> alter USER root@'%' IDENTIFIED WITH mysql_native_password by 'root';
  • caching_sha2_password 强加密
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH caching_sha2_password BY 'root';  

授予远程root用户所有权限

mysql> grant all privileges on *.* to root@'%' with grant option;

刷新权限

mysql> flush privileges;

使用safe模式进行重启

./mysqld_safe --skip-grant-tables

如果要后台启动,后面跟上 &
敲完之后回车,为啥服务没有进后台?
再一次直接回车键,跳出
ps -ef |grep myqsl查看服务,发现mysql还在
实在不放心,继续mysql -uroot -p直接回车
有密码要登录,不管,再一次回车
咦,登录上去了!
注意:
上面safe模式得以验证,当然这是通过启动safe服务才能不用输入密码,下次正常登录依旧需要密码
或者开启另一会话窗口登录, mysql -uroot -p 直接登录
如果第一步就失败了,而且报错如下:

2021-10-10T11:39:14.058864Z mysqld_safe Logging to '/data/mysql_data/log/mysql-error.log'.
2021-10-10T11:39:14.090716Z mysqld_safe Starting mysqld daemon with databases from /data/mysql_data/data
2021-10-10T11:39:14.386028Z mysqld_safe mysqld from pid file /data/mysql_data/data/mysql.pid ended

那是你关联的mysql-error.log文件,mysqld_save对其没有读写权限,导致无法开启服务,为什么?
mysqld_save该文件已经被我们设置权限为mysql,mysql权限肯定低于root,所以要保证mysql-error.log的所属关系权限是mysqld_save能访问到的

五、其他安全规则

设置mysql用户为nologin模式

就是不允许让mysql使用shell方式登录

usermod -s /sbin/nologin mysql
su mysql
This account is currently not available.

配置文件读取顺序

/etc/my.cnf
basedir/my.cnf
datadir/my.cnf
–defaults-extra-file #在读取全局配置文件之后,读取用户配置文件 (~/.my.cnf)之前,读取extra指定的参数文件
~/.my.cnf
所以我们在 /etc下的配置文件 my.cnf 是第一个读取的文件,读到这个文件后就不会在读后面路径中的配置文件。

参考其他博客来整理本文其实是想只为帮助同路人少走一些没必要的弯路,有疑问欢迎在以下评论区留言,小弟会给大家第一时间回复!

小孩纸博客宗旨:欢迎评论!欢迎留言,有问题大家一起解决嘛!

参考资料:
百度维基、百度百科,
大佬博客:https://www.cnblogs.com/yunian139/p/11804965.html
参考其他
bee100:https://blog.csdn.net/bee100/article/details/83599417
东华果汁哥:https://blog.csdn.net/u013421629/article/details/119328870
魔有追求:https://www.cnblogs.com/mozq/p/11623918.html

你可能感兴趣的:(环境部署,centos,mysql,linux)