MySQL数据库配置及创建用户和授权

注意: 都是基于MySQL8.0以上版本

1、检查是否安装过sql

[root@localhost ~]# rpm -[qa](https://so.csdn.net/so/search?q=qa&spm=1001.2101.3001.7020) | grep mysql

[root@localhost ~]# rpm -qa | grep [mariadb](https://so.csdn.net/so/search?q=mariadb&spm=1001.2101.3001.7020)

[root@localhost ~]# whereis mysql                                             

2、修改MySQL配置

需要注意的是,修改 MySQL 的配置参数时需要谨慎,如果参数配置不合理,可能会导致数据库性能下降或出现其他问题。修改 MySQL 的配置参数时,最好具有一定的经验或者了解相关的 MySQL 参数调优知识。

vi /etc/my.cnf

第一步:
cd /etc #进入etc目录下

第二步:
cp my.cnf my.cnf.bak #备份复制my.cnf文件

第三步:
①vi my.cnf #编辑my.cnf文件
②修改port=3306------------> port=更改的端口号
③ :wq #保存退出

第四步:
/usr/sbin/setenforce 0 #关掉selinux

第五步:
systemctl restart mysqld #重启MySQL服务

service mysql restart

第六步:
systemctl status mysqld #查看mysql服务的状态

第七步:
netstat -nltp #查看mysql端口号

第八步:
iptables-save #查看防火墙策略
(备注1:如果防火墙策略没有新添加的策略就执行第九步添加防火墙策略)

第九步:
firewall-cmd --zone=public --add-port=80/tcp --permanent #将端口号80做防火墙策略
(延申:firewall-cmd --zone=public --remove-port=80/tcp --permanent#将端口号80删除防火墙策)

第十步:
firewall-cmd --reload #更新防火墙策略
(备注1:更新完之后可以再执行第八步进行查看是否有防火墙策略)
(备注2:可以利用mysql连接工具连接进行测试)
(备注3:在mysql数据库中看端口号 show global variables like ‘port’;)

[mysql]
#MySQL 提示符配置

#用户名@主机名+数据库名
#prompt="\\u@\\h [\\d]>"

#用户名@主机名+mysql版本号+数据库名
prompt=\\u@\\h \\v [\\d]>\\_

#用户名@主机名+当前时间+mysql版本号+数据库名
#prompt="(\\u@\\h) \\R:\\m:\\s \\v [\\d] \n>"

# 设置mysql客户端默认字符集
default-character-set=utf8

[mysqld]
#mysql安装根目录
basedir = /usr/local/mysql/mysql-8.0.30/

#mysql数据文件所在位置
datadir = /usr/local/mysql/mysql-8.0.30/data/

#设置socke文件所在目录
socket = /tmp/mysql.sock

#数据库默认字符集, 主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)服务端使用的字符集默认为UTF8 
character-set-server = utf8mb4

#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server = utf8mb4_general_ci

#设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'

# MySQL设置免密登录
skip-grant-tables

# 用于设置数据传输时的最大数据包大小,默认值为 4MB(即 4 * 1024 * 1024),可以通过修改这个值来提高 SQL 语句执行时的性能。设置为 1000M(即 1000 * 1024 * 1024),表示最大数据包大小为 1GB,这意味着 MySQL 可以在一个查询中发送多达 1GB 的数据,对于需要传输大量数据的应用场景,这种设置可以带来非常大的性能优势。
max_allowed_packet=1000M

# 允许最大连接数
max_connections=10000

# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10

# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password

#设置表名不区分大小写
show variables like '%case_table%';
#端口设置
port = 3306

[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8

3、MySQL中user表详解

3.1 用户列(用户连接MySQL数据库需要输入的信息)

Host:主机名,双主键之一,值为%时表示匹配所有主机。User:用户名,双主键之一。Password:密码名。

HostUserPassword
%root*55B565DA3839E5955A68EA96EB735
localhostroot*55B565DA3839E5955A68EA96EB735
127.0.0.1root*55B565DA3839E5955A68EA96EB735
::1root*26C378D308851D5C717C13623EFD6

(root,%),表示可以远程登录,并且是除服务器外的其他任何终端,%表示任意IP都可登录。
(root,localhost), 表示可以本地登录,即可以在服务器上登陆,localhost则只允许本地登录。
(root,127.0.0.1 ),表示可以本机登录,即可以在服务器上登陆
(root,sv01),表示主机名为sv1可以登录,sv01具体指的哪台机器,可以在cat /etc/hostname查看
(root,::1) , 表示本机可以登录, 看密码都是相同嘛,具体::1代表意义,待查

3.2 权限列

权限列决定了用户的权限,描述了用户在全局范围内允许对数据库和数据库表进行的操作,字段类型都是枚举Enum,值只能是Y或N,Y表示有权限,N表示没有权限。

权限字段名称备注说明
Select_priv确定用户是否可以通过SELECT命令选择数据
Insert_priv确定用户是否可以通过INSERT命令插入数据
Delete_priv确定用户是否可以通过DELETE命令删除现有数据
Update_priv确定用户是否可以通过UPDATE命令修改现有数据
Create_priv确定用户是否可以创建新的数据库和表
Drop_priv确定用户是否可以删除现有数据库和表
Reload_priv确定用户是否可以执行刷新和重新加载MySQL所用各种内部缓存的特定命令,包括日志、权限、主机、查询和表重新加载权限表
Shutdown_priv确定用户是否可以关闭MySQL服务器在将此权限提供给root账户之外的任何用户时,都应当非常谨慎
Process_priv确定用户是否可以通过SHOW PROCESSLIST命令查看其他用户的进程
File_priv确定用户是否可以执行SELECT INTO OUTFILE和LOAD DATA INFILE命令

3.3 安全列

安全字段名称备注说明
ssl_type支持ssl标准加密安全字段
ssl_cipher支持ssl标准加密安全字段
x509_issuer支持x509标准字段
x509_subject支持x509标准字段
password_expired密码是否过期。Y:说明该用户密码已过期 N:没有过期
plugin5.5.7开始,mysql引入plugins以进行用户连接时的密码验证,plugin创建外部/代理用户
authentication_string通过authentication_string可以控制两者的映射关系,(PAM plugin等,PAM可以支持多个服务名)

3.4 资源控制列

控制字段名称字段类型是否为空默认值备注说明
max_questionsint(11)unsignedNO0每小时允许执行多少次查询:0表示无限制
max_updatesint(11)unsignedNO0每小时可以执行多少次更新:0表示无限制
max_connectionsint(11)unsignedNO0每小时可以建立的多少次连接:0表示无限制
max_user_connectionsint(11)unsignedNO0单用户可以同时具有的连接数:0表示无限制

4、创建用户和组以及授权

4.1 创建用户

1. 使用CREATE USER语句创建用户

可以使用 CREATE USER 语句来创建 MySQL 用户,并设置相应的密码。其基本语法格式如下:

CREATE USER '用户名'@'host' IDENTIFIED BY '密码';

其中,username 为新用户的用户名,password 为新用户的密码。此外,@‘localhost’ 表示该用户只能从本地连接到 MySQL,如果想要允许该用户从其它 IP 地址连接,则需要将 localhost 替换成对应的 IP 地址。

举例:

CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';

2. 使用 INSERT 语句新建用户

可以使用 INSERT 语句将用户的信息添加到 mysql.user 表中,但必须拥有对 mysql.user 表的 INSERT 权限。通常 INSERT 语句只添加 Host、User 和 authentication_string 这 3 个字段的值。

MySQL 5.7 的 user 表中的密码字段从 Password 变成了 authentication_string,如果你使用的是 MySQL 5.7 之前的版本,将 authentication_string 字段替换成 Password 即可。

使用 INSERT 语句创建用户的代码如下:

INSERT INTO mysql.user(User, Host, authentication_string, ssl_cipher, x509_issuer, x509_subject, ssl_type, Super_priv, Create_priv, Insert_priv, Update_priv, Delete_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, Grant_priv, References_priv, Alter_priv, Show_db_priv, Create_tmp_table_priv, Lock_tables_priv, Execute_priv, Index_priv, Alter_routine_priv, Create_view_priv, Show_view_priv, create_role_priv,  Trigger_priv, password_last_changed)
VALUES('admin1', 'localhost', SHA2('123456', 512), '', '', '', '', 'Y', 'N', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y',  'Y', 'Y', 'Y', 'Y', 'N', 'N', CURRENT_TIMESTAMP);

由于 mysql 数据库的 user 表中,ssl_cipher、x509_issuer 和 x509_subject 这 3 个字段没有默认值,所以向 user 表插入新记录时,一定要设置这 3 个字段的值,否则 INSERT 语句将不能执行。

3.为什么user表删除的用户还能进行登录操作

  1. 该用户被其他用户重新授权。在MySQL数据库中,授权是一项独立的权限,它可以被授予给其他用户。如果一个被删除的用户的权限被授予给了其他用户,那么该用户就可以使用该被删除用户的身份信息进行登录。
  2. 垃圾数据残留。有时候,我们在删除用户时,可能会犯一些错误,例如删除不完整或者删除错误的用户。在这种情况下,这些被删除用户的信息仍然存在于数据库中,如果没有及时清理,可能会导致其可以进行登录。

4.2 GRANT授权

1. 权限列表

管理员特有的权限

权限说明
SELECT允许用户读取指定的表中的数据。
INSERT允许用户插入表中的数据。
UPDATE允许用户修改表中的数据。
DELETE允许用户删除表中的数据。
CREATE允许用户创建新的数据库或表。
DROP允许用户删除数据库或表。
INDEX允许用户创建或删除数据库中的索引。
ALTER允许用户修改数据库的结构,如更改表的列、添加或删除索引等。
GRANT OPTION允许用户将自己拥有的权限授予给其他用户。
ALL PRIVILEGES允许用户执行所有的操作。

除了上述基本权限之外,也存在一些特殊的权限,比如:

权限说明
CREATE TEMPORARY TABLES允许用户创建临时表。
EXECUTE允许用户执行存储过程或函数。
FILE允许用户将数据写入服务器文件系统。
PROCESS允许用户查看所有的 MySQL 进程。
RELOAD允许用户重新加载服务端配置或刷新日志。
REPLICATION CLIENT允许用户查看 MySQL 复制状态。
REPLICATION SLAVE允许用户作为 MySQL 复制从库连接到主库。
SHOW DATABASES允许用户查看服务器上所有的数据库。
SHUTDOWN允许用户关闭 MySQL 服务器。

表格中的每个权限都描述了该权限的作用和用途。希望这个表格对你有所帮助!

虽然 CREATE USER 和 INSERT INTO 语句都可以创建普通用户,但是这两种方式不便授予用户权限。于是 MySQL 提供了 GRANT 语句。

2. 使用 GRANT 语句进行用户授权的基本语法形式如下:

GRANT <permissions> ON <database>.<table> TO <user>@[<host>];

其中,各个部分的含义如下:

  • <permissions>:指定用户的权限,可以是特定的权限(如SELECT、INSERT、UPDATE、DELETE等),也可以是ALL PRIVILEGES表示拥有全部权限。
  • <database>.<table>:指定用户的权限作用的数据库和表。
  • <user>:指定要创建的用户的名称。
  • <host>:指定用户的连接主机。可以是本地主机(localhost)、特定的IP地址,或者是通配符(%)表示所有主机。
  • <password>:为用户指定密码。

下面是一个示例:

GRANT SELECT, INSERT ON mydatabase.mytable TO 'myuser'@'localhost';

这条语句会授予名为’myuser’、连接主机为localhost的用户在mydatabase数据库的mytable表上执行SELECT和INSERT操作的权限,并指定了用户的密码为’mypassword’。请根据实际情况进行相应调整。

3. 刷新权限

注意: (每次更新权限都需要刷新一次,不然可能不生效)

FLUSH PRIVILEGES;

4.3 删除GRANT授权

要删除之前授予的权限,可以使用REVOKE语句。下面是REVOKE语句的基本语法形式:

REVOKE <permissions> ON <database>.<table> FROM <user>@[<host>];

其中,各个部分的含义与GRANT语句相同。

下面是一个示例,演示如何撤销之前授予的SELECT和INSERT权限:

REVOKE SELECT, INSERT ON test.test FROM 'myuser'@'localhost';

执行这条语句将从用户’myuser’@'localhost’身上撤销在test数据库的test表上的SELECT和INSERT权限。

请注意,REVOKE语句只会撤销已经授予的权限,而不会删除用户本身。如果需要删除用户,可以使用DROP USER语句。例如,DROP USER 'myuser'@'localhost';将删除’myuser’@'localhost’用户。

在执行REVOKEDROP USER语句时,请确保你有足够的权限执行这些操作。只有具有足够权限的用户才能撤销或删除其他用户的权限。

4.4 查看用户权限

SHOW GRANTS FOR 'username'@'host';

'username'@'host' 替换为你要查看权限的用户名和主机信息。对于 'host' 部分,可以使用 'localhost' 表示本地连接,也可以使用实际的 IP 地址或主机名。

另外,你还可以通过查询 MySQL 的权限表来查看用户的权限信息。可以运行以下命令:

SELECT * FROM mysql.user WHERE User = 'username' AND Host = 'host';

'username''host' 替换为你要查询的用户名和主机信息。这将返回与给定用户和主机相对应的权限记录。

2、修改数据库密码

第一步:

mysql -uroot -p

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jzfBv8ce-1690278150458)(E:\PRD\Images\image-20230609092347757.png)]

输入密码,然后回车

修改数据库账户密码
4.1 更新密码

语法:update user set authentication_string=password('新密码') where user = '用户名';

mysql > update user set authentication_string=password('新密码') where user = '用户名';
    
mysql5.7以下版本:UPDATE mysql.user SET Password=PASSWORD('新密码') where USER='用户名';

mysql5.7版本:UPDATE mysql.user SET authentication_string=PASSWORD('新密码') where USER='用户名';

mysql8.0版本:update mysql.user set authentication_string=‘新密码’ where user=‘root’;
mysql8.0版本:ALTER USER 'root' IDENTIFIED WITH mysql_native_password BY '新密码';

4.2 刷新权限

mysql > flush privileges;

然后就可以使用新密码登录数据库了

3、设置允许远程登录

mysql> use mysql
mysql> update user set user.Host='%'where user.User='root';
mysql> flush privileges;
mysql> quit

https://blog.csdn.net/weixin_44234912/article/details/109078167

https://blog.csdn.net/qq_57389269/article/details/126248678

https://blog.csdn.net/qq_38914940/article/details/127216367

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/51956.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

左值引用与右值引用的区别?右值引用的意义?

左值引用与右值引用的区别&#xff1f;右值引用的意义&#xff1f; 1 区别1.1 功能差异1.2 左值引用1.3 右值引用1.3.1 实现移动语义1.3.2 实现完美转发 2 引用的作用3 区分左值和右值3.1 左值3.2 右值 1 区别 左值引用是对左值的引用&#xff1b;右值引用是对右值的引用。 &…

04 http连接处理(上)

基础知识&#xff1a;epoll、http报文格式、状态码和有限状态机 代码&#xff1a;对服务端处理http请求的全部流程进行简要介绍&#xff0c;然后结合代码对http类及请求接收进行详细分析。 epoll epoll_create函数 #include <sys/epoll.h> int epoll_create(int size)…

回归预测 | MATLAB实现TCN-BiLSTM时间卷积双向长短期记忆神经网络多输入单输出回归预测

回归预测 | MATLAB实现TCN-BiLSTM时间卷积双向长短期记忆神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现TCN-BiLSTM时间卷积双向长短期记忆神经网络多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现TCN-BiLSTM时间卷积…

CleanMyMac X4.14.1中文版如何清理 Mac系统?CleanMyMac 真的能断网激活吗?

CleanMyMac X4.14.1中文版如何清理 Mac系统&#xff1f;Mac系统在使用过程中都会产生大量系统垃圾&#xff0c;如不需要的系统语言安装包&#xff0c;视频网站缓存文件&#xff0c;mac软件卸载残留的注册表等。 随着时间推移&#xff0c;mac系统垃圾就会越来越多&#xff0c;电…

美团小图币代挂教程

登陆美团官网获取对应的cookie 美团官网&#xff0c;点击右上角登陆对应账号。登陆成功后使用f12来获取 cookie 此时如果没有任何数据&#xff0c;点击网页刷新。找到如下的网络请求 赋值cookie项的全部内容&#xff0c;此时已经获取到对应账号的cookie 使用cookie登陆代挂…

Web博客项目及jwt的学习

这几天完善了发布博客&#xff0c;完成了收藏博客的功能 博客项目 一共有三种身份&#xff1a; 访客&#xff08;未登录&#xff09;&#xff0c;用户&#xff0c;管理员。 其中管理员拥有的功能最多&#xff0c;其次是用户&#xff0c;然后是访客。 从功能上看&#xff1a…

一文3000字从0到1使用Selenium进行自动化测试

对于很多刚入门的测试新手来说&#xff0c;大家都将自动化测试作为自己职业发展的一个主要阶段。可是&#xff0c;在成为一名合格的自动化测试工程师之前&#xff0c;我们不仅要掌握相应的理论知识&#xff0c;还要进行大量的实践&#xff0c;积累足够的经验&#xff0c;以便快…

7.7 SpringBoot实战 管理员借阅审核列表 --分页和枚举的使用

文章目录 前言一、需求二、定义接口 BookAdminController三、核心实现 BookBorrowService新建 BookBorrowService 接口定义如下&#xff1a;新建 BookBorrowServiceImpl 类&#xff0c;核心实现逻辑&#xff1a;新建 BookBorrowBO 四、图书借阅状态枚举 BookBorrowStatusEnum五…

华为数通HCIA-数通网络基础

基础概念 通信&#xff1a;两个实体之间进行信息交流 数据通信&#xff1a;网络设备之间进行的通信 计算机网络&#xff1a;实现网络设备之间进行数据通信的媒介 园区网络&#xff08;企业网络&#xff09;/私网/内网&#xff1a;用于实现园区内部互通&#xff0c;并且需要部…

better scoll的使用以及注意事项以及左联右

下载better scoll的核心 在你要使用的页面引入 在data里面定义一个对象 然后在createad里面放一个nexttick异步操作。 上面是获取这个left-box节点是父节点 记住里面只能有一个子节点如果循环了 就要再包一个div就是一个子节点 左联右 首先也要获取 右边的 父节点 然后配…

(树) 剑指 Offer 28. 对称的二叉树 ——【Leetcode每日一题】

❓ 剑指 Offer 28. 对称的二叉树 难度&#xff1a;简单 请实现一个函数&#xff0c;用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样&#xff0c;那么它是对称的。 例如&#xff0c;二叉树 [1,2,2,3,4,4,3] 是对称的。 1/ \2 2/ \ / \3 4 4 3但是下面这个…

了解Unity编辑器之组件篇Layout(八)

Layout&#xff1a;用于管理和控制UI元素的排列和自动调整一、Aspect Ratio Fitter&#xff1a;用于根据宽高比自动调整UI元素的大小 Aspect Mode&#xff1a;用于定义纵横比适配的行为方式。Aspect Mode属性有以下几种选项&#xff1a; &#xff08;1&#xff09;None&#xf…

安全学习DAY12_信息打点-Web应用信息搜集

信息打点-Web应用 文章目录 信息打点-Web应用业务资产企业查信息的目的 Web应用信息搜集Web网站域名搜集WEB单域名WEB子域名OneForAll&#xff08;子域名收集工具&#xff09; WEB网站架构资产WEB指纹识别资产 常用查询平台汇总查企业信息查备案信息查公众号信息域名注册查询IP…

基于 Docker 的深度学习环境:Windows 篇

本篇文章&#xff0c;我们聊聊如何在 Windows 环境下使用 Docker 作为深度学习环境&#xff0c;以及快速运行 SDXL 1.0 正式版&#xff0c;可能是目前网上比较简单的 Docker、WSL2 配置教程啦。 写在前面 早些时候&#xff0c;写过一篇《基于 Docker 的深度学习环境&#xff…

幅度调制与角度调制

文章目录 前言一、调制简介1、调制定义2、调制目的3、调制的分类 二、幅度调制&#xff08;线性调制&#xff09;1、幅度调制的一般模型2、常规双边带调幅 AM①、AM 信号的产生②、AM 调制器的模型③、AM 波形和频谱④、AM 信号的特点⑤、AM 包络检波⑥、调幅系数 3、抑制载波双…

【用IDEA基于Scala2.12.18开发Spark 3.4.1 项目】

目录 使用IDEA创建Spark项目设置sbt依赖创建Spark 项目结构新建Scala代码 使用IDEA创建Spark项目 打开IDEA后选址新建项目 选址sbt选项 配置JDK debug 解决方案 相关的依赖下载出问题多的话&#xff0c;可以关闭idea&#xff0c;重启再等等即可。 设置sbt依赖 将sbt…

neo4j教程-Cypher操作

Cypher基础操作 Cypher是图形存储数据库Neo4j的查询语言&#xff0c;Cypher是通过模式匹配Neo4j数据库中的节点和关系&#xff0c;从而对数据库Neo4j中的节点和关系进行一系列的相关操作。 下面&#xff0c;通过一张表来介绍一下常用的Neo4j操作命令及相关说明&#xff0c;具…

基于峰谷分时电价引导下的电动汽车充电负荷优化(matlab代码)

目录 1 主要内容 峰谷电价优化 电动汽车充电负荷变化 2 部分代码 3 程序结果 1 主要内容 该程序基本复现《基于峰谷分时电价引导下的电动汽车充电负荷优化》&#xff0c;代码主要做的是基于NSGA-II的电动汽车充电负荷优化&#xff0c;首先&#xff0c;在研究电动汽车用户充…

【VSCode部署模型】导出TensorFlow2.X训练好的模型信息

参考tensorflow2.0 C加载python训练保存的pb模型 经过模型训练及保存&#xff0c;我们得到“OptimalModelDataSet2”文件夹&#xff0c;模型的保存方法(.h5或.pb文件)&#xff0c;参考【Visual Studio Code】c/c部署tensorflow训练的模型 其中“OptimalModelDataSet2”文件夹保…

HDFS中namenode安全模式

HDFS中namenode安全模式 安全模式的现象探究step1step2step3step4 安全模式的概述控制进入时间和离开条件安全模式自动进入离开安全模式手动进入离开 安全模式的现象探究 step1 HDFS集群在停机状态下&#xff0c;使用hdfs -daemon命令逐个进程启动集群&#xff0c;观察现象首…