【mysql】常用操作:维护用户/开启远程/忘记密码/常用命令

news2025/1/18 9:05:08

一、维护用户

1.1 创建用户

-- 语法
> CREATE USER '[username]'@'[host]' IDENTIFIED BY '[password]';

-- 例子:
-- 添加用户user007,密码123456,并且只能在本地可以登录
> CREATE USER 'user007'@'localhost' IDENTIFIED BY '123456';
-- 添加用户user007,密码123456,并且可以从任意远程主机登录
> CREATE USER 'user007'@'%' IDENTIFIED BY '123456';

1.2 删除用户

-- 语法
> DROP USER '[username]'@'[host]';

-- 例子:
-- 删除从本地登录的账户user007
> DROP USER 'user007'@'localhost';
-- 删除从任意主机登录的账户user007
> DROP USER 'user007'@'%';

1.3 授权

-- 语法
> GRANT [privileges] ON [databasename].[tablename] TO '[username]'@'[host]'
-- privileges: SELECT,INSERT,UPDATE

-- 例子:
-- 给从本地主机访问的user007添加指定权限:select, insert
> GRANT SELECT,INSERT ON db_demo.* TO 'user007'@'localhost';
-- 给从任意主机访问的user007添加所有权限
> GRANT ALL ON *.* TO 'user007'@'%';

用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:

-- 语法
> GRANT [privileges] ON [databasename].[tablename] TO '[username]'@'[host]' WITH GRANT OPTION;

-- 例子
-- 给从本地主机访问的user007添加指定权限:select, insert,并且user007可以给别的用户授权
> GRANT SELECT,INSERT ON db_demo.* TO 'user007'@'localhost' WITH GRANT OPTION;

1.4 检验授权信息

-- 查看所有授权
> SHOW GRANTS;

-- 查看指定人/机授权:查看从本地登录的用户user007的授权
> SHOW GRANTS FOR 'user007'@'localhost';

-- 查看指定人授权:查看从任意主机登录的用户user007的授权
> SHOW GRANTS FOR 'user007'@'%';

 1.4 撤销授权

-- 语法
> REVOKE [privileges] ON [databasename].[tablename] FROM '[username]'@'[host]';

-- 例子:
-- 撤销从本地登录的user007在数据库demo上的select和insert授权
> REVOKE SELECT,INSERT ON db_demo.* FROM 'user007'@'localhost';
-- 撤销从任意主机登录的user007的所有授权
> REVOKE ALL ON *.* FROM 'user007'@'%';

这里需要注意,撤销授权必须跟授权命令匹配,否则不能撤销。

-- 授权
GRANT SELECT,INSERT ON db_demo.* TO 'user007'@'localhost';
-- 对应的撤销授权
REVOKE SELECT,INSERT ON db_demo.* FROM 'user007'@'localhost';

-- 授权
GRANT ALL ON *.* TO 'user007'@'%';
-- 对应的撤销授权
REVOKE ALL ON *.* FROM 'user007'@'%';

1.5 修改密码

-- 语法
> SET PASSWORD FOR '[username]'@'[host]' = PASSWORD('[newpassword]');

-- 例子
-- 修改当前用户的密码为 12345678
> SET PASSWORD = PASSWORD("12345678");

 二、开启远程

开启远程需要注意端口安全,以下场景可以考虑开启远程:

  • 内网可访问,比如web应用需要访问时,把web服务器和mysql服务器置于同一内网网段
  • 测试服务器
  • 修改端口并且设置远程访问用户

开启远程其实就是基于1.3的授权。

2.1 查询授权

mysql> use mysql;
mysql> select User,authentication_string,Host from `user`;

2.2 开启远程

-- 开启root可以远程访问,并且访问密码是 123456
mysql> grant all privileges on *.* to 'root'@'%' IDENTIFIED BY '123456';

-- 修改完记得重新加载权限数据
mysql> flush privileges;

2.3 验证授权

mysql> use mysql;
mysql> select User,authentication_string,Host from `user`;

三、忘记密码

当忘记密码的时候,我们需要跳过权限验证进行登录,然后修改密码。

3.1 如果是CentOS7

3.1.1 停止服务

> sudo systemctl stop mysqld

3.1.2 修改服务配置跳过权限验证

> vi /usr/lib/systemd/system/mysqld.service

打开mysql的服务文件,编辑运行主服务那一行:

ExecStart=/usr/bin/mysqld_safe --basedir=/usr

添加 --skip-grant-tables

ExecStart=/usr/bin/mysqld_safe --basedir=/usr --skip-grant-tables

3.1.3 重启服务

# 重新加载修改的服务文件
> sudo systemctl daemon-reload

# 启动MySQL服务
> sudo systemctl start mysqld

3.1.4 登录mysql

> mysql -uroot -p

运行命令后直接进入mysql,无需密码。

3.1.5 修改密码

# 修改从本地登录的root账号的密码为123456
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

# 刷新权限
mysql> flush privileges;

3.1.6 移除跳过权限验证的参数

这是为了还原#3.1.2步的操作,移除增加的参数:

> vi /usr/lib/systemd/system/mysqld.service

打开mysql的服务文件,编辑运行主服务那一行:

ExecStart=/usr/bin/mysqld_safe --basedir=/usr --skip-grant-tables

移除 --skip-grant-tables

ExecStart=/usr/bin/mysqld_safe --basedir=/usr

3.1.7 重新登录

> mysql -uroot -p

此时提示需要密码,输入 123456后登录mysql:

3.2 如果是CentOS6

3.2.1 停止服务

# 方式1
> /etc/init.d/mysql stop   

# 方式2
> service mysqld stop

3.2.2 无需权限启动mysql

> /usr/bin/mysqld_safe --skip-grant-tables&

 也是  --skip-grant-tables 这个参数。

3.2.3 登录mysql

# 方式1
> mysql 

# 方式2
> mysql -uroot -p

运行命令后直接进入mysql,无需密码。

 3.2.4 修改密码

# 切换到数据库 mysql 
mysql> use mysql

# 修改root账号的密码为123456
mysql> update user set password=password("123456") where user="root";

# 刷新权限
mysql> flush privileges;

3.2.5 重启服务

在3.2.2中我们以无权限的方式启动mysql,需要重启以正常方式启动:

# 杀死无权限启动服务
> sudo killall mysqld_safe&

# 正常启动mysql
> /etc/init.d/mysql start

 3.2.6 重新登录

> mysql -uroot -p

此时提示需要密码,输入 123456后登录mysql:

 四、常用命令

-- 查看视图:
show table status where comment='view';

-- 查看存储过程:
show procedure status;

-- 查看进程:
show full processlist;

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

宇哥强调!7月份必须开始强化阶段(附规划)

七月开始强化不晚,但是要开始了! 张宇老师说:七月,也就是暑假是大家学习的最佳时机,这个时候要大量的做题! 如果你是三月份开始备考的,那么到了七月份,基础应该复习的差不多了&…

wget:unable to resolve host address ...(已解决)

写在前面: 最近在学习Linux命令,此问题是在使用wget安装rar时出现的问题,记录一下解决的过程。仅供参考,若有不当的地方,恳请指正。如果对你有帮助,欢迎点赞,关注,收藏,…

基于YOLOv5+pyqt5的跌倒检测系统(含pyqt页面、训练好的模型)

简介 跌倒是老年人和身体不便者常见的意外事故,及时检测和处理跌倒事件对于保障他们的安全至关重要。为了提高对跌倒事件的监控效率,我们开发了一种基于YOLOv5目标检测模型的跌倒检测系统。本报告将详细介绍该系统的实际应用与实现,包括系统…

OpenCv形态学(一)

目录 形态学转换 结构元素 腐蚀 膨胀 开运算 闭运算 形态学梯度 顶帽 黑帽 图像轮廓 查找轮廓 绘制轮廓 形态学转换 形态变换是一些基于图像形状的简单操作。通常在二值图像上执行。它需要两个输入,一个是我们的原始图像,第二个是决定操作性…

Nginx Proxy Manager反向代理Jackett

1 说明 最近折腾nas,发现npm反向代理Jackett后出现无法访问的问题,是因为外网访问jackett (例如https://domain.com:7373/jackett/UI/Dashboard)时,url会被重定向到https://domain.com/jackett/UI/Login?ReturnUrl%2Fjackett%2FUI%2FDashbo…

基于matlab的K-means聚类图像分割

1 原理 K-means聚类算法在图像分割中的应用是基于一种无监督的学习方法,它将图像中的像素点或特征区域划分为K个不同的簇或类别。以下是K-means聚类算法用于图像分割的原理,包括步骤和公式: 1.1 原理概述 选择簇的数量(K): 首先…

《数字图像处理与机器视觉》案例一(库尔勒香梨果梗提取和测量)

一、引言 果梗是判断水果新鲜程度的重要标志,对水果的贮藏和保鲜也具有重要的参考价值。库尔勒香梨分级标准中对果梗有明确要求,要求果梗完整,但由于库尔勒香梨果梗颜色与果实接近,用传统的简单阈值分割方法难以提取。因此&#…

双指针算法专题(移动零 复写零 快乐数)

目录 前言 1. 移动零 (1)题目及示例 (2)一般思路 (3)双指针解法 2. 复写零 (1)题目及示例 (2)一般解法 (3)双指针解法 3. 快…

Kubernetes相关生态

1、Prometheus、Metrics Server与Kubernetes监控体系 简介: Prometheus 项目与 Kubernetes 项目一样,也来自于 Google 的 Borg 体系,它的原型系统,叫作 BorgMon,是一个几乎与 Borg 同时诞生的内部监控系统 Pro…

AG32 MCU Start Kit 开发板快速入门及 21天体验活动

AG32 IDE开发环境搭建-完整版 海振远科技 2024-6-18 AG32 MCU开发板的使用 使用准备 在使用开发板前,请确认已经安装好开发环境。 安装环境过程,请参考文档《AG32 开发环境搭建.pdf》 上电: 给开发板5V 供电,打开开关&#…

平面设计软件PS/AI/ID/CDR怎么选怎么下载(附教程)

随着设计行业的普遍化,平面设计软件也越来越多且功能越来越强大。平面设计软件需要在电脑上运行使用,来进行平面画面、平面文字的设计工作。如大家所了解的,Adobe Photoshop、Adobe Illustrator、CorelDRAW、Adobe InDesign是平面设计中最常用…

PostgreSQL计算 queryid 原理

数据库版本 PG 16.1 queryid 是什么 queryid 是将 sql 规范化 (normalization) 后&#xff0c;通过哈希函数计算出来的 64 位整数。 以 SELECT id, data FROM tbl_a WHERE id < 300 ORDER BY data; 这条 SQL 为例。当我们在 PG 中执行这条 sql 时&#xff0c;内核在语义…

技术性屏蔽百度爬虫已经一周了!

很久前明月就发现百度爬虫只抓取、只收录就是不给流量了&#xff0c;加上百度搜索体验越来越差&#xff0c;反正明月已经很久没有用过百度搜索&#xff0c;目前使用的浏览器几乎默认搜索都已经修改成其他搜索引擎了&#xff0c;真要搜索什么&#xff0c;一般都是必应谷歌结合着…

【设计模式深度剖析】【11】【行为型】【解释器模式】| 以算术表达式求值为例加深理解

&#x1f448;️上一篇:状态模式 设计模式-专栏&#x1f448;️ 文章目录 解释器模式定义英文原话直译 解释器模式中的角色1. 抽象表达式&#xff08;AbstractExpression&#xff09;2. 终端表达式&#xff08;TerminalExpression&#xff09;3. 非终端表达式&#xff08;Non…

Linux 特殊变量 $?

一. 说明 在 Linux 和其他类 Unix 系统中&#xff0c;$? 是一个特殊的变量&#xff0c;用于获取上一个命令的退出状态码。 退出状态码是一个整数值&#xff0c;通常用来表示命令的执行结果。 ⏹退出状态码的含义 0&#xff1a;命令成功执行。0以外的数字&#xff1a;命令执…

[SAP ABAP] 插入内表数据

语法格式 INSERT <wa> INTO <itab> INDEX <idx>. <wa>&#xff1a;代表工作区 <itab>&#xff1a;代表内表 <idx>&#xff1a;代表索引值 示例1 结果显示&#xff1a; 语法格式 INSERT <wa> INTO TABLE <itab>. <wa>&…

文件创建与查看

touch touch命令用于创建一个新的文件。 语法&#xff1a;touch Linux路径 其中路径可以是相对路径、绝对路径或者特殊路径符都可以。 改图展示了通过 touch test.txt 命令创建了一个 test.txt文件&#xff0c;其中深色的代表文件夹&#xff0c;白色的代表文件。 使用 ls -lh…

昇思25天学习打卡营第5天|模型训练|保存与加载

学AI还能赢奖品&#xff1f;每天30分钟&#xff0c;25天打通AI任督二脉 (qq.com) 模型训练 模型训练一般分为四个步骤&#xff1a; 构建数据集。定义神经网络模型。定义超参、损失函数及优化器。输入数据集进行训练与评估。 现在我们有了数据集和模型后&#xff0c;可以进行…

QTreeView双击任意列展开

一.效果 二.原理 重点是如何通过其他列的QModelIndex(假设为index),获取第一列的QModelIndex(假设为firstColumnIndex)。代码如下所示: QModelIndex firstColumnIndex = model->index(index.row(), 0, index.parent()); 这里要注意index函数的第三个参数,第三个参…

切换国内yum源

切换国内yum源 一、备份现有YUM源二、下载新的YUM源配置文件三、先清理YUM缓存再生成四、测试新的YUM源五、重启系统服务(生效可以不重启)可选 首先&#xff0c;切换国内YUM源的具体步骤取决于您使用的Linux发行版和当前的YUM源配置。以下是一般步骤&#xff0c;适用于大多数基…