day43 mysql 基本管理,[破解密码以及用户权限设置]以及慢日志查询配置
配置文件:详细步骤,
1,找到mysql的安装包,然后打开后会看到一个my.ini命名的程序,把它拖拽到notepad++里面来打开,(应该是其他文本形式也可以打开,可以试一下),直接拖拽即可打开该文件,然后会看到很多加了注释的代码,如图所示:
我们可以把注释都删掉,从第一行开始一直到上图所示的client关键字前面的内容都可以删掉了,然后开始增加代码,
2,找到红色标识的mysql关键字,在该段代码里添加上你的mysql用户名和登录密码,就是[user='root',password='123']这句话,要换行写入
然后保存文件,一定要记得保存否则不会生效的.
然后我们回到cmd的小黑框里面来,直接输入[mysql]即可直接登录,不需要跟之前一样需要输入mysql -uroot -p123,这样就会方便很多,
{需要补充的是,我们把用户名如果添加到client保存也会有同样的效果,我试过,在client里面保存了一份用户信息,然后在mysql里面也保存了一份,然后在mysql里面保存的信息是不存在的(即是假的信息),然后在cmd里面直接输入mysql,会报错,报错内容是'error 1045(28000):access denied for user'top'@localhost'(using password:yes) =========== 这句话的意思就是:没有该用户.我们在client里面和mysql里面都写入了用户信息,mysql里面写入的是假的用户信息,而在client里面则写入的是正确的,但是系统没有识别我们写在client里面的正确的可以顺利登陆的用户信息,所以我们就直接在mysql里面加入用户信息的代码即可}
然后我们在cmd里面打开mysql后输入: \s 命令,我们可以看到客户端,服务端,文件内容等的编码都是utf8,有的情况是它并不是utf8,那么后期的编码出现问题,在项目中导致文件等无法顺利读取,很抓狂的.
那么我们就需要掌握设置编码的方法,
上面提到了三个红色标识的client,mysql,mysqld,我们在这三个代码里面添加一行代码,
default-character-set=utf8
然后保存.就可以搞定了.
破解密码:
1,打开电脑开始键的图标,在搜索框输入-- services.exe 进入服务窗口;或者鼠标点击桌面下方任务栏右键单击打开''启动任务管理器''---找到'服务'按钮,单击,如图所示:
然后打开后找到mysql的程序,如图:
右键单击'停止',然后停掉服务,
下面这几步的操作都是在cmd里面执行:
2,然后在cmd里面输入命令mysql --skip--grant--tables 这里是跳过了用户输入的那一段信息,
3,再输入mysql --uroot -p 这里就是,实现了跳过输入用户信息的
4,select user(); 这里查询出来用户信息,
5,update mysql.user set password=password('123') where user='root';
6,flush priviages;
7,tasklist
8,tasklist |findstr mysql
9,tskill mycqld
10,在服务里面去找到mycql然后启动服务器,
11,输入mycql -uroot -p123 这里的123是自定义设置的,密码.
12,select user(); 这里查询出来用户信息,就可以得到我们更改后的结果
破解密码的两种方式:
#1 关闭mysql #2 在cmd中执行:mysqld --skip-grant-tables #3 在cmd中执行:mysql #4 执行如下sql: update mysql.user set authentication_string=password('') where user = 'root'; flush privileges; #5 tskill mysqld #或taskkill -f /PID 7832 #6 重新启动mysql 方式一 #1. 关闭mysql,可以用tskill mysqld将其杀死 #2. 在解压目录下,新建mysql配置文件my.ini #3. my.ini内容,指定 [mysqld] skip-grant-tables #4.启动mysqld #5.在cmd里直接输入mysql登录,然后操作 update mysql.user set authentication_string=password('') where user='root and host='localhost'; flush privileges; #6.注释my.ini中的skip-grant-tables,然后启动myqsld,然后就可以以新密码登录了 方式二
用户权限设置:
授权表:图解
user #该表放行的权限,针对:所有数据,所有库下所有表,以及表下的所有字段 db #该表放行的权限,针对:某一数据库,该数据库下的所有表,以及表下的所有字段 tables_priv #该表放行的权限。针对:某一张表,以及该表下的所有字段 columns_priv #该表放行的权限,针对:某一个字段 #按图解释: user:放行db1,db2及其包含的所有 db:放行db1,及其db1包含的所有 tables_priv:放行db1.table1,及其该表包含的所有 columns_prive:放行db1.table1.column1,只放行该字段
#创建用户 create user 'egon'@'1.1.1.1' identified by '123'; create user 'egon'@'192.168.1.%' identified by '123'; create user 'egon'@'%' identified by '123'; #授权:对文件夹,对文件,对文件某一字段的权限 查看帮助:help grant 常用权限有:select,update,alter,delete all可以代表除了grant之外的所有权限 #针对所有库的授权:*.* grant select on *.* to 'egon1'@'localhost' identified by '123'; #只在user表中可以查到egon1用户的select权限被设置为Y{我作为管理员给@后面的ip地址授权了egon1这个用户名,以及123这个密码,它可以用这个用户名和密码访问我的所有库以及所有表格,对他们进行查询操作,select就是查询操作,我可以把它替换成update,或者同时授予它多个操作,使用','隔开即可} #针对某一数据库:db1.* grant select on db1.* to 'egon2'@'%' identified by '123'; #只在db表中可以查到egon2用户的select权限被设置为Y #针对某一个表:db1.t1 grant select on db1.t1 to 'egon3'@'%' identified by '123'; #只在tables_priv表中可以查到egon3用户的select权限 #针对某一个字段: mysql> select * from t3; +------+-------+------+ | id | name | age | +------+-------+------+ | 1 | egon1 | 18 | | 2 | egon2 | 19 | | 3 | egon3 | 29 | +------+-------+------+ grant select (id,name),update (age) on db1.t3 to 'egon4'@'localhost' identified by '123'; #可以在tables_priv和columns_priv中看到相应的权限 mysql> select * from tables_priv where user='egon4'\G *************************** 1. row *************************** Host: localhost Db: db1 User: egon4 Table_name: t3 Grantor: root@localhost Timestamp: 0000-00-00 00:00:00 Table_priv: Column_priv: Select,Update row in set (0.00 sec) mysql> select * from columns_priv where user='egon4'\G *************************** 1. row *************************** Host: localhost Db: db1 User: egon4 Table_name: t3 Column_name: id Timestamp: 0000-00-00 00:00:00 Column_priv: Select *************************** 2. row *************************** Host: localhost Db: db1 User: egon4 Table_name: t3 Column_name: name Timestamp: 0000-00-00 00:00:00 Column_priv: Select *************************** 3. row *************************** Host: localhost Db: db1 User: egon4 Table_name: t3 Column_name: age Timestamp: 0000-00-00 00:00:00 Column_priv: Update rows in set (0.00 sec) #删除权限 revoke select on db1.* from 'alex'@'%'; # 我们这里是我作为管理员,我给这个ip地址回收了我授权给他的'alex'用户名的权限. 权限相关操作
删除授权之后需要重启mysql服务,在服务里面去操作:
在配置文件里面加上一条配置即可得到慢日志查询的效果
slow_query_log=on
本文转载自egon博客-mysql系列-初始数据库
cnblog.linhaifeng