Mysql账户管理原理与实现方法详解

本文实例讲述了Mysql账户管理原理与实现方法。分享给大家供大家参考,具体如下:

账户管理

在生产环境下操作数据库时,绝对不可以使用root账户连接,而是创建特定的账户,授予这个账户特定的操作权限,然后连接进行操作,主要的操作就是数据的crud
MySQL账户体系:根据账户所具有的权限的不同,MySQL的账户可以分为以下几种
服务实例级账号:,启动了一个mysqld,即为一个数据库实例;如果某用户如root,拥有服务实例级分配的权限,那么该账号就可以删除所有的数据库、连同这些库中的表
数据库级别账号:对特定数据库执行增删改查的所有操作
数据表级别账号:对特定表执行增删改查等所有操作
字段级别的权限:对某些表的特定字段进行操作
存储程序级别的账号:对存储程序进行增删改查的操作
账户的操作主要包括创建账户、删除账户、修改密码、授权权限等
注意:

进行账户操作时,需要使用root账户登录,这个账户拥有最高的实例级权限
通常都使用数据库级操作权限

授予权限

需要使用实例级账户登录后操作,以root为例

主要操作包括:

查看所有用户
修改密码
删除用户

1. 查看所有用户

所有用户及权限信息存储在mysql数据库的user表中
查看user表的结构
desc user;
主要字段说明:
Host表示允许访问的主机
User表示用户名
authentication_string表示密码,为加密后的值
查看所有用户

select host,user,authentication_string from user;

结果

mysql> select host,user,authentication_string from user;
+-----------+------------------+-------------------------------------------+
| host   | user       | authentication_string           |
+-----------+------------------+-------------------------------------------+
| localhost | root       | *E74858DB86EBA20BC33D0AECAE8A8108C56B17FA |
| localhost | mysql.sys    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | debian-sys-maint | *EFED9C764966EDB33BB7318E1CBD122C0DFE4827 |
+-----------+------------------+-------------------------------------------+
3 rows in set (0.00 sec)

2. 创建账户、授权

需要使用实例级账户登录后操作,以root为例
常用权限主要包括:create、alter、drop、insert、update、delete、select
如果分配所有权限,可以使用all privileges

2.1 创建账户&授权

grant 权限列表 on 数据库 to '用户名'@'访问主机' identified by '密码';

2.2 示例1

创建一个laowang的账号,密码为123456,只能通过本地访问, 并且只能对jing_dong数据库中的所有表进行读操作

step1:使用root登录

mysql -uroot -p
回车后写密码,然后回车

step2:创建账户并授予所有权限

grant select on jing_dong.* to 'laowang'@'localhost' identified by '123456';

说明

可以操作python数据库的所有表,方式为:jing_dong.*
访问主机通常使用 百分号% 表示此账户可以使用任何ip的主机登录访问此数据库
访问主机可以设置成 localhost或具体的ip,表示只允许本机或特定主机访问
查看用户有哪些权限

show grants for laowang@localhost;

step3:退出root的登录

quit

step4:使用laowang账户登录

mysql -ulaowang -p
回车后写密码,然后回车

登录后效果如下图

2.3 示例2

创建一个laoli的账号,密码为12345678,可以任意电脑进行链接访问, 并且对jing_dong数据库中的所有表拥有所有权限

grant all privileges on jing_dong.* to "laoli"@"%" identified by "12345678"



账户操作

1. 修改权限

grant 权限名称 on 数据库 to 账户@主机 with grant option;



2. 修改密码

使用root登录,修改mysql数据库的user表

使用password()函数进行密码加密

update user set authentication_string=password('新密码') where user='用户名';
例:
update user set authentication_string=password('123') where user='laowang';

注意修改完成后需要刷新权限

刷新权限:flush privileges

3. 远程登录(危险慎用)

如果向在一个Ubuntu中使用msyql命令远程连接另外一台mysql服务器的话,通过以下方式即可完成,但是此方法仅仅了解就好了,不要在实际生产环境中使用

修改 /etc/mysql/mysql.conf.d/mysqld.cnf 文件

vim /etc/mysql/mysql.conf.d/mysqld.cnf


然后重启msyql

service mysql restart

在另外一台Ubuntu中进行连接测试


如果依然连不上,可能原因:

  1. 网络不通

通过 ping xxx.xxx.xx.xxx可以发现网络是否正常

2)查看数据库是否配置了bind_address参数

本地登录数据库查看my.cnf文件和数据库当前参数show variables like ‘bind_address';

如果设置了bind_address=127.0.0.1 那么只能本地登录

3)查看数据库是否设置了skip_networking参数

如果设置了该参数,那么只能本地登录mysql数据库

4)端口指定是否正确

4. 删除账户

语法1:使用root登录

drop user '用户名'@'主机';
例:
drop user 'laowang'@'%';

语法2:使用root登录,删除mysql数据库的user表中数据

delete from user where user='用户名';
例:
delete from user where user='laowang';

-- 操作结束之后需要刷新权限
flush privileges

推荐使用语法1删除用户, 如果使用语法1删除失败,采用语法2方式

3. 忘记 root 账户密码怎么办 !!

一般也轮不到我们来管理 root 账户,所以别瞎卖白粉的心了

忘记mysql root用户密码的解决办法(skip-grant-tables):

skip-grant-tables
顾名思义,数据库启动的时候 跳跃权限表的限制,不用验证密码,直接登录。

注意:

这种情况只有在忘记root密码 不得已重启数据库的情况下使用的。现网环境慎用,需要重启数据库,并且安全性也比较难以保证。

1.修改配置参数

/etc/my.cnf

[mysqld] 下面加上:

skip-grant-tables
配置项。

2.重启mysql

使得参数生效:

service mysqld restart

3.注意事项

此时所有用户登录当前数据库都是免密码的,所以此时数据库的安全性是非常低的。

4.修改密码

具体的办法:

https://www.jb51.net/article/169143.htm

5.去掉参数

a.密码修改好了之后再将配置文件中 skip-grant-tables去掉

b.再次重启数据库。

更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL查询技巧大全》、《MySQL常用函数大汇总》、《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》及《MySQL数据库锁相关技巧汇总》

希望本文所述对大家MySQL数据库计有所帮助。

(0)

相关推荐

  • Java基于MySQL实现学生管理系统

    本文为大家分享了Java基于MySQL实现学生管理系统,供大家参考,具体内容如下 因为实验室要交作业然后就做了一个学生管理系统,贴个代码纪念一下,做的太急界面什么的也比较差. 还有一些小细节没有完善不过还是能实现主要的功能的. Window是主界面 package First; import java.sql.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Window { pub

  • MySQL日志管理详解

    日志文件对于一个服务器来说是非常重要的,它记录着服务器的运行信息,许多操作都会写日到日志文件,通过日志文件可以监视服务器的运行状态及查看服务器的性能,还能对服务器进行排错与故障处理,MySQl中有六种不同类型的日志. 一.日志种类 ---–> 1,错误日志:记录启动.运行或停止时出现的问题,一般也会记录警告信息. ---–> 2,一般查询日志:记录建立的客户端连接和执行的语句. ---–> 3,慢查询日志:记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询,

  • 通过mysqladmin远程管理mysql的方法

    在本地安装mysql的服务端,打开cmd,cd到mysql安装目录下的bin目录,bin目录中可以看到多个可执行文件,其中mysqladmin就是可以用于远程关闭mysql服务的. mysqladmin的参数如下: mysqladmin Ver 8.42 Distrib 5.5.2-m2, for Win32 on ia32Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.This software comes with ABSOL

  • MySQL创建新用户、增加账户的2种方法及使用实例

    可以用两种方式创建MySQL账户: 1.使用GRANT语句 2.直接操作MySQL授权表 最好的方法是使用GRANT语句,因为这样更精确,错误少. 创建超级用户: 复制代码 代码如下: mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost' IDENTIFIED BY 'some_pass' WITH GRANT OPTION; mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%' IDE

  • Mysql权限管理grant命令使笔记

    MySQL 赋予用户权限命令的简单格式可概括为: 复制代码 代码如下: grant 权限 on 数据库对象 to 用户  [identified by '密码'] 最常用的,弄主从同步的时候,给从库的slave用户设置拥有所有权限,权限all仅允许其从192.168.0.2登录,并限定使用密码 funsion  (密码要用 单/双引号 括起来) 复制代码 代码如下: grant all on *.* to slave@192.168.0.2 identified by 'funsion'; 执行

  • MySQL用户权限管理详解

    用户权限管理主要有以下作用: 1. 可以限制用户访问哪些库.哪些表 2. 可以限制用户对哪些表执行SELECT.CREATE.DELETE.DELETE.ALTER等操作 3. 可以限制用户登录的IP或域名 4. 可以限制用户自己的权限是否可以授权给别的用户 一.用户授权 复制代码 代码如下: mysql> grant all privileges on *.* to 'yangxin'@'%' identified by 'yangxin123456' with grant option;  

  • MySQL 管理

    对于内容驱动的网站,设计好坏的关键是关系型数据库.在这个教程中,我们已经使用了MySQL关系型数据库管理系统(RDBMS)建立了我们的数据库.对于网站的开发者来说,MySQL是一个较受欢迎的选择,这不仅是因为它对于任何平台上的非商业应用都是免费的,而且也因为它的架设和使用非常的简单.正如我们在第一章中所看到的那样,根据正确的指导,一个新的用户可以在不超过30分钟的时间内架设好一个MySQL服务,并将其运行起来(对于一个有经验的用户甚至只要10分钟!). 如果你想做的仅仅是架设一个MySQL服务环

  • MySQL用户账户管理和权限管理深入讲解

    前言 MySQL 的权限表在数据库启动的时候就载入内存,当用户通过身份认证后,就在内存中进行相应权限的存取,这样,此用户就可以在数据库中做权限范围内的各种操作了. 下面话不多说了,来一起看看详细的介绍吧 mysql 的权限体系大致分为5个层级: 全局层级 全局权限适用于一个给定服务器中的所有数据库.这些权限存储在mysql.user表中.GRANT ALL ON *.*和REVOKE ALL ON *.*只授予和撤销全局权限. 数据库层级 数据库权限适用于一个给定数据库中的所有目标.这些权限存储

  • MySQL中基本的用户和权限管理方法小结

    MySQL 默认有个root用户,但是这个用户权限太大,一般只在管理数据库时候才用.如果在项目中要连接 MySQL 数据库,则建议新建一个权限较小的用户来连接. 在 MySQL 命令行模式下输入如下命令可以为 MySQL 创建一个新用户: CREATE USER username IDENTIFIED BY 'password'; 新用户创建完成,但是此刻如果以此用户登陆的话,会报错,因为我们还没有为这个用户分配相应权限,分配权限的命令如下: GRANT ALL PRIVILEGES ON *.

  • mysql下mysqladmin日常管理命令总结(必看篇)

    mysqladmin 工具的使用格式: mysqladmin [option] command [command option] command ...... 参数选项: -c number 自动运行次数统计,必须和 -i 一起使用 -i number 间隔多长时间重复执行 0)每个两秒查看一次服务器的状态,总共重复5次. [root@test-huanqiu ~]# mysqladmin -uroot -p -i 2 -c 5 status 1)查看服务器的状况:status [root@te

随机推荐