MySQL

是一个多用户数据库,具有功能强大的访问控制系统,可以为不同的用户指定不同的权限。 MySQL 的用户管理与 Linux 操作系统类似,主要分为普通用户和 root(超级管理员)用户。其中 root 用户具有所有权限,包括创建普通用户、删除用户和修改用户的密码等管理权限,在实际的项目应用中,可以根据不同的需求创建不同权限的普通用户。本章将详细介绍 MySQL 中的权限管理。

MySQL 服务器

将用户的登录数据以权限表的形式存储到系统默认的数据库中,当用户访问数据库时,系统会将登录用户的数据与存储在数据库中的相关数据进行信息比对,信息一致则登录成功,否则登录失败。

权限表

由 mysql_install_db 脚本初始化, 其中存储用户权限的信息表主要有 user、db、 host、 tables_priv、
columns_priv 和 procs_priv。本节将为读者介绍这些表的内容和作用。

MySQL 安装完成后, 会自动创建默认的数据库, 这些数据库中存储着与 MySQL相关的配置信息和一些基本数据,使用相关命令查看系统中的数据库

mysql 数据库是系统的核心数据库,主要负责存储数据库的用户、权限设置、关键字等 MySQL自己需要使用的控制和管理信息。需要注意,此表不可以删除。另外,如果对 MySQL 不是很了解,也不建议修改这个数据库里面表的信息。使用相关 SQL 语句可以查看 mysql 数据库的表

mysql 数据库中关于系统访问权限和授权信息的表

( 1) user:包含用户账户和全局权限以及其他非权限列表(安全配置选项列和资源控制选项列)。
( 2) db:数据库级别的权限表。
( 3) tables_priv:表级别的权限表。
( 4) columns_priv:列级权限表。
( 5) procs_priv:存储过程和函数权限表。
( 6) proxies_priv:代理用户权限表。

查看当前数据库版本

select version();

账户管理

登录和退出数据库

数据库的登录方式:
1.-h 指定登录的主机 (既可以跟上主机名/IP地址)

语法:mysql -u用户-p用户的密码-h主机名/IP地址

A主机192.168.100.130(数据库) B主机192.168.100.150(数据库)

B主机连接A主机:mysql -uroot -p -h(A的地址)

2.-u 指定登录的用户 (既可以是管理员也可以是普通用户)

语法:mysql -u用户 -p用户的密码

3.-p 指定登录用户的密码

语法:mysql -u用户 -p密码
  1. -P 指定端口号
语法:mysql  -u用户  -p 用户的密码  -p端口号
httpd80  ssh22  nginx80  mariadb3306

5.-e不登录数据库直接执行命令

语法:mysql -u用户   -p用户的密码-e'需要执行的命邻'

6.mysql -uroot -p123456 (数据库名字)
代表的是用root用户登录到数据库,并且自动进入你输入数据库名字的数据库中

数据库的退出方式

1、exit.
2、quit.
3、\q
4、ctrl+z** 代表的是停止,这个进程还存在只不过放在了后台,随时用随时调取
jobs查看后台进程有哪些
fg把后台的作业调用到前台  fg %(加上后台进程号)
5、ctrl+c**代表的是终止,这个进程不存在了,当想要再次执行那就再次执行命令

创建用户

create user ‘用户名'@'主机名/IP地址';
(创建用户不设置密码)

例如:create user 'jerry'@'localhost'; 
创建用户jerry能够不使用密码登录
语法:create user '用户名'@'主机名/IP地址’identified by  '密码;
(创建用户设置密码)

例如:具体用法:create user 'tom'@'localhost' identified by '123';
代表创建一个名为tom的用户能够在本地以123的密码登录

查看用户以及能够登录的主机:

select user,host from mysql.user;
(不管是管理员还是普通用户都可以看到)

删除用户

1.drop user ‘用户名'@"主机名/IP地址";

例如:用法drop user 'tom'@'192.168.253.155'; 
删除tom能够在192.168.253.155这台主机上面的登录
2.**delete from mysql.user where host='主机名/IP地址’ and user=‘用户名'**

例如:用法delete from mysql.user where host='localhost' and user='tom' 
删除tom用户在本机的登录

修改用户密码

1.mysqladmin (给管理员修改密码)
语法:mysqladmin  -uroot  -p原来的密码  password  新密码      
(不用在数据库里面修改密码)

例如:mysqladmin -uroot -p123 password 123456 
代表的是把root用户的密码从原来的123改为123456
2.set (既可以是普通用户使用也可以是管理员用户使用)
①语法:set password  for  '用户名'@'主机名/IP地址’ =password('需要设置的新密码');
(管理员给普通用户修改密码方式)

例如:set password for 'tom'@'localhost'=password('123456'); 
修改tom用户在本机登录的密码为123456

②语法:set password=password('新密码'); (普通用户给自己修改密码的方式)
set password=password('123456');
3.alter
语法:alter user ‘用户名'@'主机名/IP地址’ identified by  '新密码';

例如:alter user 'tom'@'localhost'  identified by '123'; 
代表的是修改tom用户在本地登录的密码为123
4.update
语法:update mysql.user  set authentication_string=password('新密码') where user='用户名' and host=‘主机名/IP地址';
(如果修改密码成功但是还是原来的密码可以登录,就用别的方式修改一下密码,然后再从新用update这个命令修改密码,再重启服务就好了)

mysql破解密码:

mysql破解数据库密码跟mariadb有区别

①安装mysql
②修改my.cnf配置文件,添加内容skip-grant-tables
③重启服务生效
④登录数据库,不需要密码登录
⑤修改用户密码, 看到显示ok代表修改成功
⑥退出数据库去验证, 修改my.cnf文件把添加的内容删除 
⑦重启服务生效,以新密码登录

给用户修改名字

rename user '原来的用户名'@'主机名/IP地址' to '新名字'@'主机名/IP地址';

例如:rename user 'alice'@'localhost' to 'zhangshan'@'localhost'; 
把Alice用户重命名为zhangshan

MySQL权限

create drop ---创建用户、数据库、表、删除用户、删除数据库、删除表
insert 、delete、update、select   ----表
index   ----创建索引、删除索引|
alter     ---修改表结构/表名
grant    ---可以授权 
all (添加所有的权限)
select * from mysql.user\G(查看所有用户所有的权限)

CREATE ROUTINE·权限允许用户创建要保存的程序(函数)
FILE 权限允许用户使用 LOAD DATA INFILE和 SELECT INTO OUTFTLE 等语句读写服务器上的文件

授权(给用户授权用户可以事先不存在,授权的过程会自动创建)

语法:grant 需要赋予的权限 on 数据库名.表名  to ‘用户名'@'主机名/IP地址’identified by  '密码';

例如:grant insert on *.* to 'tom'@'localhost' identified by  '123456'; 
  授权(insert)插入的权限运用在(*.*)所有数据库中所有表给tom用户
with grant option:如果添加了这个内容那么就意味着授权的用户也能够把这个权限赋予其他人

查看权限

show grants for‘用户名'@'主机名/IP地址;

取消权限:revoke

语法:revoke 需要取消的权限 on 数据库.表名 from '用户名'@注机名/IP地址';
例如:revoke insert on from 'jerry'@'localhost'; 取消jerry用户插入的权限

刷新权限

MariaDB [(none)]> flush privileges;