mysql授权

news/2024/11/15 4:28:38/文章来源:https://www.cnblogs.com/btcm409181423/p/18328933

mysql连接的两种方式

mysql服务端 10.0.0.51:3306 
mysql -uroot -p密码   -h该账户允许登录的网段    -P实例端口第一种
基于ip:port的 网络链接形式,入口一 ,链接参数 ,-hlocahost    -P3306
端口,窗口提供服务的入口windows机器,去链接 mysql服务端本质上是tcp的建立netstat 查看网络链接情况# 期望是你windows也装了个mysql,然后去登录windows命令行: mysql -uroot -p密码 -hlocalhost# 远程链接# 前提(默认mysql只提供了localhost登录,)# 授权操作,允许root@10.0.0.% 这个网段登录windows命令行:发请求10.0.0.1 这个windows的ip发出登录请求↓mysql -uroot -plinux3306 -h10.0.0.51 -P3306第二种
只能再10.0.0.51这个机器上,机器本地,基于进程套接字文件的链接形式
还能用window去用这个方式吗?不能!!!!!
#这个命令只能是在10.0.0.51这个机器去执行
mysql -uroot -plinux3306 -S /linux3306/mysql_3306/mysql.sock 

启动、关闭mysql原理

systemctl start mysqld
systemctl stop  mysqld如果这俩命令,报错了,如何排查
以及你得搞懂mysql启动的进程命令,背后的脚本加载逻辑,执行顺序管理3306实例的脚本逻辑顺序1. 脚本放在了 /etc/init.d/mysqld2. 可以用多种方式使用该脚本1.给脚本添加执行权限
/etc/init.d/mysqld  start2. 该方式等于
service mysqld start 3.centos7上建议写法systemctl  start mysqld4. service和systemctl命令都是去读取  /etc/init.d/目录下的脚本mysqld脚本文件5.再centos7下的加载顺序/etc/init.d/mysqld
↓
systemctl 去调用
↓
service  转化为systemctl  

mysqld_safe和mysqld区别

mysqld_safe作用

1. mysql官方启动脚本,是以执行mysqld_safe为入口,其实mysqld_safe也是个shell脚本,调用了myqsld命令启动服务2.mysqld_safe脚本设置运行环境,如以守护进程运行
3.mysqld_safe检测mysqld运行状态
4.mysqld_safe检测mysqld进程运行信息,写入 mysql实例目录下的hostname.err文件
5.以及mysqld_safe会读取my.cnf配置文件的[mysqld],[mysqld_safe]等配置

mysqld作用

mysqld是mysql的核心程序,用于管理mysql的数据库文件,以及用户执行的SQL请求
mysqld读取my.cnf中 [mysqld]配置



关闭mysql

脚本关闭,什么脚本起的,就用什么脚本关

systemctl stop mysqld
service mysqld stop
/etc/init.d/mysqld stop

命令关闭

mysql> shutdown;
Query OK, 0 rows affected (0.00 sec)

特殊情况下,不建议用这个操作

kill pid
pkill mysqld
killall mysqldkill -9 pid # 极端情况下,才能用这个
# 除非进程卡死,无任何解决办法,再去 kill -9 pid 数据丢失,数据写入,事务提交,确认数据写入到磁盘,写入到日志

远程连接管理学习grant语句

本地连接

# 授权语句,创建一个用户,只允许本地连接
# 也能实现创建一个用户的作用
grant 权限  on 库.表 to 用户名@'允许登录的网段' identified by '远程登录的用户密码';
# 注意,写localhost 和127.0.0.1是不一样的# 创建wenjie用户,只允许再机器本地登录mysql 3307实例,给与最大权限,可以增删改查所有库表
# 先登录
[root@tech-db-51 ~]#mysql -uroot -plinux3307 -S /linux0224/mysql_3307/mysql.sock mysql> 
mysql> grant all privileges   on *.* to wenjie@'127.0.0.1'  identified by 'wenjie666';

查看mysql的用户表

1. 登录
[root@tech-db-51 ~]#mysql -uroot -plinux3307 -S /linux0224/mysql_3307/mysql.sock 2. 先进入mysql库,查看库下的所有表mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)mysql> use mysql;# 查看当前再哪个库mysql> select database();
+------------+
| database() |
+------------+
| mysql      |
+------------+
1 row in set (0.00 sec)# 查看当前库下有哪些表,2个语法# 完整的
mysql> show tables from mysql;# 简写
mysql> show tables;

授权,允许访问的网段

# 只允许wenjie用户在 10.0.0.0~255 网段登录,有最大的权限# 授权语句只能用root去操作# % 百分号表示一个任意匹配的意思
grant all privileges on *.* to wenjie@'10.0.0.%' identified by 'wenjie666';#查询mysql的用户表的信息,当前mysql实例,有哪些用户信息select * from mysql.user; # 默认查询所有的字段select user,host from mysql.user;# 再创建一个用户 songlin01 只允许再内网172网段登录mysqlgrant all privileges on *.* to songlin01@'172.16.1.%' identified by 'songlin666';mysql> 
mysql> select user,host  from mysql.user;
+---------------+------------+
| user          | host       |
+---------------+------------+
| wenjie        | 10.0.0.%   |
| wenjie        | 127.0.0.1  |
| songlin01     | 172.16.1.% |
| mysql.session | localhost  |
| mysql.sys     | localhost  |
| root          | localhost  |
| wenjie        | localhost  |
+---------------+------------+
7 rows in set (0.00 sec)

远程登录白名单语法

mysql -uroot -pwww.yuchaoit.cn -S /tmp/mysql.sock -e "grant all on . to bob01@'10.0.0.7' identified by 'yuchao666';"

mysql 用户授权语法用户名@'网段白名单'语法yuchao@'localhost'  yuchao可以在本地登录(ip:3306),以及socketyuchao@'10.0.0.10'  yuchao只能在10.0.0.10这个客户端登录
yuchao@'10.0.0.%'   yuchao只能在10.0.0.xx/24网段登录
yuchao@'10.0.0.5%'  yuchao只能在10.0.0.50~59 登录yuchao@'%'  yuchao可以在任意地址登录该mysql服务端
yuchao@'db-51'   基于主机名的登录限制

用户管理

查看mysql用户列表

[root@db-51 ~]#mysql -uroot -pwww.yuchaoit.cn -e 'select User,Host,authentication_string from mysql.user;'
mysql: [Warning] Using a password on the command line interface can be insecure.
+---------------+-----------+-------------------------------------------+
| User          | Host      | authentication_string                     |
+---------------+-----------+-------------------------------------------+
| root          | localhost | *E4270FA99E3E2D95856323D2C35CB2E4728028A1 |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys     | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| yuchao01      | localhost | *518455521988924B96DD6FFF6F10BC59693382B0 |
| yuchao02      | 10.0.0.%  | *518455521988924B96DD6FFF6F10BC59693382B0 |
| bob01         | 10.0.0.7  | *518455521988924B96DD6FFF6F10BC59693382B0 |
+---------------+-----------+-------------------------------------------+
[root@db-51 ~]#

创建用户

create user chaoge01@'localhost'; # 创建用户无密码select user,host,authentication_string from mysql.user; # 查询创建且设置密码create user chaoge02@'localhost' identified by '123';

修改用户密码,root去修改

alter user chaoge01@'localhost' identified by '123';
alter user chaoge01@'localhost' identified by 'yuchaoge666';

普通用户改自己密码

# 注意修改自己的密码,要进行加密处理# 需求,让wenjie修改自己的密码为 laoliu666set password=password('chaoge666');

删除用户

mysql> drop user chaoge02@'localhost';
Query OK, 0 rows affected (0.00 sec)

授权管理

权限的作用

限制mysql的用户,可以执行哪些SQL语句。

grant授权命令

查看所有文档
mysql> help grant;

语法

grant all privileges on . to 'yuchaoit'@'10.0.0.%' identifiedy by 'chaoge666';

授权实践

root默认不允许远程登录,给与权限,允许远程登录

grant all privileges on *.* to 'root'@'%' identified by 'chaoge666';

给一个普通开发者的账户权限,只能增删改查基本操作,且限定某个数据库,且只允许在内网环境连接。

grant select,update,delete,insert on crm.* to dev01@'10.0.0.%' identified by 'dev666';

查看具体用户的权限

mysql> show grants for chaoge01@'localhost';
+----------------------------------------------+
| Grants for chaoge01@localhost                |
+----------------------------------------------+
| GRANT USAGE ON *.* TO 'chaoge01'@'localhost' |
+----------------------------------------------+
1 row in set (0.00 sec)

回收权限

# 移除删除权限
revoke delete on *.* from dev01@'10.0.0.%';# 移除所有权限,针对crm这个库
revoke all on crm.* from dev01@'10.0.0.%';再次查询
show grants for dev01@'10.0.0.%';

只有账户、无任意权限

该账户只能登录

mysql> show grants for dev01@'10.0.0.%';
+------------------------------------------+
| Grants for dev01@10.0.0.%                |
+------------------------------------------+
| GRANT USAGE ON *.* TO 'dev01'@'10.0.0.%' |
+------------------------------------------+
1 row in set (0.00 sec)

privileges权限表

All/All Privileges权限代表全局或者全数据库对象级别的所有权限Alter权限代表允许修改表结构的权限,但必须要求有create和insert权限配合。如果是rename表名,则要求有alter和drop原表, create和insert新表的权限Alter routine权限代表允许修改或者删除存储过程、函数的权限Create权限代表允许创建新的数据库和表的权限Create routine权限代表允许创建存储过程、函数的权限Create tablespace权限代表允许创建、修改、删除表空间和日志组的权限Create temporary tables权限代表允许创建临时表的权限Create user权限代表允许创建、修改、删除、重命名user的权限Create view权限代表允许创建视图的权限Delete权限代表允许删除行数据的权限Drop权限代表允许删除数据库、表、视图的权限,包括truncate table命令Event权限代表允许查询,创建,修改,删除MySQL事件Execute权限代表允许执行存储过程和函数的权限File权限代表允许在MySQL可以访问的目录进行读写磁盘文件操作,可使用的命令包括load data infile,select … into outfile,load file()函数Grant option权限代表是否允许此用户授权或者收回给其他用户你给予的权限,重新付给管理员的时候需要加上这个权限Index权限代表是否允许创建和删除索引Insert权限代表是否允许在表里插入数据,同时在执行analyze table,optimize table,repair table语句的时候也需要insert权限Lock权限代表允许对拥有select权限的表进行锁定,以防止其他链接对此表的读或写Process权限代表允许查看MySQL中的进程信息,比如执行show processlist, mysqladmin processlist, show engine等命令Reference权限是在5.7.6版本之后引入,代表是否允许创建外键Reload权限代表允许执行flush命令,指明重新加载权限表到系统内存中,refresh命令代表关闭和重新开启日志文件并刷新所有的表Replication client权限代表允许执行show master status,show slave status,show binary logs命令Replication slave权限代表允许slave主机通过此用户连接master以便建立主从复制关系Select权限代表允许从表中查看数据,某些不查询表数据的select执行则不需要此权限,如Select 1+1, Select PI()+2;而且select权限在执行update/delete语句中含有where条件的情况下也是需要的Show databases权限代表通过执行show databases命令查看所有的数据库名Show view权限代表通过执行show create view命令查看视图创建的语句Shutdown权限代表允许关闭数据库实例,执行语句包括mysqladmin shutdownSuper权限代表允许执行一系列数据库管理命令,包括kill强制关闭某个连接命令, change master to创建复制关系命令,以及create/alter/drop server等命令Trigger权限代表允许创建,删除,执行,显示触发器的权限Update权限代表允许修改表中的数据的权限Usage权限是创建一个用户之后的默认权限,其本身代表连接登录权限
# by www.yuchaoit.cn

修改root密码

Mysqladmin改密码

myqsladmin  具体链接哪一个数据库实例   修改它的密码# 修改3307的root的密码
mysqladmin -uroot -plinux3307  -S /linux0224/mysql_3307/mysql.sock  password new3307 # 客户端命令登录3307,查看信息
mysql -uroot -pnew3307 -S /linux0224/mysql_3307/mysql.sock -e "status;"

set语句修改

- root去修改他人密码- `set password for  wenjie01@'10.0.0.%'=PASSWORD('wj666')`
- 用户直接用set命令改自己的密码- 普通用户登录后- `set password='新密码'`- `set password=PASSWORD('新密码')`

update语句修改

mysql> update mysql.user set authentication_string=password("www.yuchaoit.cn") where user='root' and host='localhost';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 1mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)刷新后,权限表会更新

忘记root密码咋办

# 1. 修改my.cnf
skip-grant-table
重启密码了没问题,也修改完毕了# 案例,如忘记了 3307的密码vim /etc/mysql_3307.cnf  
#这个功能是给 [mysqld]服务端
[root@tech-db-51 ~]#cat /etc/mysql_3307.cnf 
[mysqld]
skip-grant-tables
port=3307
user=mysql
basedir=/opt/mysql/
datadir=/linux0224/mysql_3307/
socket=/linux0224/mysql_3307/mysql.sock
log_error=/linux0224/mysql_3307/mysql.log# 重启mysqld,读取该配置,跳过授权表[root@tech-db-51 ~]#vim /etc/mysql_3307.cnf[root@tech-db-51 ~]#bash /linux0224/3307.sh start
Starting MySQL...
[root@tech-db-51 ~]#ps -ef|grep 3307
root       2159      1  0 19:42 pts/0    00:00:00 /bin/sh /opt/mysql/bin//mysqld_safe --defaults-file=/etc/mysql_3307.cnf --pid-file=/linux0224/mysql_3307/mysqld_3307.pid
mysql      2322   2159  3 19:42 pts/0    00:00:00 /opt/mysql/bin/mysqld --defaults-file=/etc/mysql_3307.cnf --basedir=/opt/mysql/ --datadir=/linux0224/mysql_3307 --plugin-dir=/opt/mysql//lib/plugin --user=mysql --log-error=/linux0224/mysql_3307/mysql.log --pid-file=/linux0224/mysql_3307/mysqld_3307.pid --socket=/linux0224/mysql_3307/mysql.sock --port=3307
root       2352   1353  0 19:42 pts/0    00:00:00 grep --color=auto 3307# 登录试试,注意链接哪个实例[root@tech-db-51 ~]#mysql -S /linux0224/mysql_3307/mysql.sockmysql> set password='linux3307';
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement想基于set修改密码,基于跳过授权表的登录状态,不允许走set修改暴力点update改密码表数据update mysql.user  SET authentication_string=PASSWORD('linux3307')  where  user='root' and host='localhost'  ;至此,密码修改完毕
刷新权限数据表;mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)# 2. 务必要改回来修改配置文件,去掉免密参数,重启,试试新密码
[root@tech-db-51 ~]#cat  /etc/mysql_3307.cnf 
[mysqld]
port=3307
user=mysql
basedir=/opt/mysql/
datadir=/linux0224/mysql_3307/
socket=/linux0224/mysql_3307/mysql.sock
log_error=/linux0224/mysql_3307/mysql.log重启
[root@tech-db-51 ~]#bash /linux0224/3307.sh restart
Restarting MySQL...
Stoping MySQL...
Starting MySQL...登录
[root@tech-db-51 ~]#mysql -uroot -plinux3307 -S /linux0224/mysql_3307/mysql.sock -e "status"
mysql: [Warning] Using a password on the command line interface can be insecure.
--------------
mysql  Ver 14.14 Distrib 5.7.28, for linux-glibc2.12 (x86_64) using  EditLine wrapperConnection id:		3
Current database:	
Current user:		root@localhost
SSL:			Not in use
Current pager:		stdout
Using outfile:		''
Using delimiter:	;
Server version:		5.7.28 MySQL Community Server (GPL)
Protocol version:	10
Connection:		Localhost via UNIX socket
Server characterset:	latin1
Db     characterset:	latin1
Client characterset:	utf8
Conn.  characterset:	utf8
UNIX socket:		/linux0224/mysql_3307/mysql.sock
Uptime:			46 secThreads: 1  Questions: 7  Slow queries: 0  Opens: 105  Flush tables: 1  Open tables: 98  Queries per second avg: 0.152

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DelphiJNI实际调试

1:下载 DelphiJNI:下载地址https://github.com/aleroot/DelphiJNI,版本比较老,没有找到其他,就用这个吧,如朋友有较新的pas文件,请留言下 2:下载jdk,这里下载JDK,这里使用javase-jkd18,也不知道这个版本要不要收费,这里学习用暂时不关新这个。 3:编写调用class的代…

playbook+roles安装nginx实战

基本目录结构host文件夹 用于存放主机清单文件 hosts文件 hosts文件内容如下:(仅供参考) [proxy] node2 [web] 192.168.xx.xxplaybook-all-roles.yml文件 用于指定执行哪个role的文件(命名可以自定义) 文件内容如下:(仅供参考) 因为roles文件夹下只有nginx一个文件夹,所…

2024夏中山集训第1周

【NOIP模拟一】20240729 C 注意到答案是s除以区间gcd。 裴蜀定理推广 D像这样建图,跑全源最短路。 在这张图上有 \(1\to 2\to 3\to 4\to 5\) 和 \(7\to 8\to 9\to 3\ to 10\ to 11\) 两条路径。把路径上的点看作车上的点,每个点本身看作车站。 可以发现在车(一条路径)上的点…

关于多模块开发各级目录的用途

参考苍穹外卖 项目整体结构如下各层的用途序号 名称 说明1 sky-take-out maven父工程,统一管理依赖版本,聚合其他子模块2 sky-common 子模块,存放公共类,例如:工具类、常量类、异常类等3 sky-pojo 子模块,存放实体类、VO、DTO等4 sky-server 子模块,后端服务,存放配置文…

WPF实现一个错误信息栏

实现结果一,首先建立一个UserControl 前台代码如下:点击查看代码 <UserControl x:Class="实现一个错误信息栏.ErrorLog"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/x…

c语言中数据的格式化输出

001、输出整型数据,直接输出[root@PC1 test]# ls test.c [root@PC1 test]# cat test.c #include <stdio.h>int main(void) {printf("[%d]\n", 123);return 0; } [root@PC1 test]# gcc test.c -o kkk [root@PC1 test]# ls kkk test.c [root@PC1 test]# ./kkk …

电脑技巧 | 你想拥有这样的自定义工具栏命令按钮吗?QTTabBar帮助你实现!

【电脑技巧】第90期:你想拥有这样的自定义工具栏命令按钮吗?QTTabBar帮助你实现!

window系统使用Tomcat部署若依微服务

安装JAVA 下检查是否安装了JAVAjava -version提示"java: command not found"则表示没有安装,如果安装了会显示JAVA版本信息 CentOS安装JAVAsudo yum install java-11-openjdk-devel 安装完成再执行一下:java -version 说明安装成功,没问题 设置环境变量 设置JAVA_H…

暑假集训CSP提高模拟11

暑假集训CSP提高模拟11 组题人: @KafuuChinocpp\(T1\) P152. Fate \(24pts\)强化版: HDU1688 Sightseeing设 \(dis_{i,0/1}\) 表示从 \(s\) 到 \(i\) 的最短路/次短路长度, \(f_{i,0/1}\) 表示从 \(s\) 到 \(i\) 的最短路/次短路条数。\(dijkstra\) 过程中按照路径长度与最短…

7.29 调试及admin

为什么服务不能启动 go 模块支持 go程序启动过程编译完成之后会在制定目录底下生成一个同名文件, 而不是意向中的service文件 没有搞清楚run是什么的,可以直接运行的 go启动和退出 接口是底层的数据结构 接口的构造过程 反射类型 …

.NET 窗口/屏幕截图

图像采集源除了显示控件(上一篇《.NET 控件转图片》有介绍从界面控件转图片),更多的是窗口以及屏幕。 窗口截图最常用的方法是GDI,直接上Demo吧:1 private void GdiCaptureButton_OnClick(object sender, RoutedEventArgs e)2 {3 var bitmap …

400 Bad Request(错误请求)

400 Bad Request(错误请求):请求无效,服务器无法理解或处理请求。可能的原因包括参数错误、格式错误、缺少必需的字段或数据错误。问题不常见,大多服务器原因,虚拟主机用户联系空间商。 自己购买的服务器,需要寻求三方技术支持排查问题。扫码添加技术【解决问题】专注中…