Mysql8.0数据库安装、用户创建及授权、设置白名单--看这一篇就够了!

Mysql对于大家来说可能是再也熟悉不过的了,是我们日常开发中经常使用的一款关系型数据库,之前可能更多地是使用别人搭建好的数据库服务,今天咱们从搭建的角度去讲解下服务的搭建流程,以及如何创建用户、赋予权限、设置白名单及修改端口。

本文以Mysql8版本为例,讲解下centos7系统下的搭建流程。

1.安装前的环境检查

安装数据库之前,需要检查下当前系统是否自带mysql数据库,以及当前服务器上是否已经安装过数据库

  • 1.1 查看当前系统是否自带MySQL数据库

复制代码
rpm -qa | grep mysql

如有,会显示软件名称

  • 1.2 卸载自带的MySQL数据库

复制代码
rpm -e --nodeps xxx

xxx换成第一步查询出的服务名称

  • 1.3 使用如下命令查询下系统中是否存在多余的mysql相关信息,然后删除无用的文件或者目录即可

复制代码
find / -name mysql

  • 1.4 如果之前安装过数据库,卸载对应的用户与组

复制代码
sudo userdel mysql``sudo groupdel mysql

2.安装数据库

  • 2.1 下载安装包

[mysql8.0.30](链接:pan.baidu.com/s/10ERPeTWa... 提取码:yqsy)

  • 2.2 解压软件包

复制代码
tar -xvf mysql-xxxxxx.tar.gz

  • 2.3 移动解压包到指定目录并重命名

复制代码
mv mysql-xxx /usr/local/mysql

  • 2.4 创建用户组并修改权限

复制代码
cd /usr/local/mysql
groupadd mysql
useradd -r -g mysql mysql
mkdir -p /data/mysql
chown mysql:mysql -R /data/mysql

  • 2.5 编辑my.cnf配置文件,添加如下配置

复制代码
vim /etc/my.cnf
复制代码
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true
lower_case_table_names=1
max_connections = 4096
max_connect_errors = 100

注意将上述配置复制到my.cnf配置文件中,要检查确认下配置开头的[mysqld]和bind-address是否复制完整,以免出错,尽量不要在本地编辑好上传到/etc目录下,可能会因编码格式问题导致部署报错

  • 2.6 进入安装目录,并初始化数据库

复制代码
cd /usr/local/mysql/bin/

./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize

  • 2.7 查看初始密码

my.cnf配置文件中包含了密码存储的位置,即/data/mysql/mysql.err文件
复制代码
cat /data/mysql/mysql.err

![初始密码图](https://img-blog.csdnimg.cn/8fc33136fd714060a87046cde8023ab4.png#pic_center)

  • 2.8 将mysql服务复制到/etc/init.d目录,便于通过service命令启动

复制代码
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

  • 2.9 启动服务从查看信息

复制代码
service mysql start``ps -ef|grep mysql

  • 2.10 登录

复制代码
./mysql -u root -p 回车,然后输入初始化密码即可

  • 2.11 查看库信息

登录成功后,可以使用use mysql命令查看下库信息,可能会提示让你修改密码,直接执行命令修改即可
复制代码
SET PASSWORD = PASSWORD('xxxxxxx');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
FLUSH PRIVILEGES;

数据库启动成功后,其他ip可能无法访问,需要设置为其他ip可访问模式:
复制代码
update user set host = '%' where user = 'root'; #%表示root用户能在任何host访问
FLUSH PRIVILEGES;

至此,数据库服务已经可以正常访问了,也可以通过不同的客户端进行连接

  • 2.12 停止服务

复制代码
service mysql stop

3.创建用户及授权

  • 3.1 创建用户

复制代码
CREATE USER 'xxxx'@'%' IDENTIFIED BY 'password'; xxx换成用户名,password换成实际密码

  • 3.2 设置权限

复制代码
GRANT ALL PRIVILEGES ON . TO 'xxxx'@'%' WITH GRANT OPTION; //授予所有权限
GRANT ALL PRIVILEGES ON xxx.* TO 'username'@'%'; //授予xxx数据库的所有权限,username换成实际用户名
grant update,delete,insert,select ON xxx.* TO 'username'@'%';//授予xxx数据库的部分权限,username换成实际用户名

赋予权限后,要刷新使之立即生效
FLUSH PRIVILEGES;

  • 3.3 查询给用户赋予的权限

复制代码
show grants for 'username'@'%';

  • 3.4 删除用户

如果想删除用户,或者修改访问权限,执行对应命令即可,执行完刷新使之立即生效
复制代码
drop user 'username'@'%'; FLUSH PRIVILEGES;

删除用户也可以用如下命令,
复制代码
drop user 'username'@'ip';

删除前可以使用select user,host from user;查看下是否使用%还是具体的ip

  • 3.5 更改用户的访问模式

此处用来设置是本地访问,指定ip可访问还是所有ip均可访问,具体的命令如下所示:
复制代码
update user set host = 'localhost' where user = 'username'; //本地访问 update user set host = '%' where user = 'username'; //所有ip可访问 update user set host = 'ip' where user = 'username'; //指定的ip可访问

username换成实际用户名

设置后,执行刷新命令使之立即生效
复制代码
FLUSH PRIVILEGES;

4.设置白名单及授权
复制代码
CREATE USER 'username'@'ip' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON xxx.* TO 'username'@'ip';

以上命令设置后只有指定的ip可以访问数据库,如果要设置多个白名单ip,多次执行以上命令即可,然后每次执行时修改对应的ip信息,执行完执行刷新命令使之立即生效
复制代码
FLUSH PRIVILEGES;

此外,如果想修改数据库端口,进入到/etc/my.cnf文件,然后直接修改对应端口,修改后重启服务即可

好了,以上就是数据库的整个安装和授权过程,如果对你有所帮助,欢迎一键三连,你的认可和肯定就是我创作的最大动力。

相关推荐
小_太_阳14 分钟前
Scala_【2】变量和数据类型
开发语言·后端·scala·intellij-idea
直裾17 分钟前
scala借阅图书保存记录(三)
开发语言·后端·scala
黑胡子大叔的小屋35 分钟前
基于springboot的海洋知识服务平台的设计与实现
java·spring boot·毕业设计
ThisIsClark37 分钟前
【后端面试总结】深入解析进程和线程的区别
java·jvm·面试
星就前端叭1 小时前
【开源】一款基于Vue3 + WebRTC + Node + SRS + FFmpeg搭建的直播间项目
前端·后端·开源·webrtc
计算机毕设孵化场1 小时前
计算机毕设-基于springboot的校园社交平台的设计与实现(附源码+lw+ppt+开题报告)
spring boot·课程设计·计算机毕设论文·计算机毕设ppt·计算机毕业设计选题推荐·计算机选题推荐·校园社交平台
雷神乐乐1 小时前
Spring学习(一)——Sping-XML
java·学习·spring
YashanDB2 小时前
【YashanDB知识库】XMLAGG方法的兼容
数据库·yashandb·崖山数据库
独行soc2 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍11基于XML的SQL注入(XML-Based SQL Injection)
数据库·安全·web安全·漏洞挖掘·sql注入·hw·xml注入
苹果醋32 小时前
Golang的文件加密工具
运维·vue.js·spring boot·nginx·课程设计