2019独角兽企业重金招聘Python工程师标准>>>
MariaDB密码重置
MariaDB慢查询日志
MariaDB密码重置
登录MariaDB
- 正常情况使用密码登录MariaDB,-p后面是密码
mysql -uroot -ppasscode
重置root密码
- 如果忘记root密码
- 编辑/etc/my.cnf,增加:skip-grant,重启服务
[root@localhost ~]# vi /etc/my.cnf [mysqld] datadir=/data/mysql socket=/tmp/mysql.sock skip-grant [root@localhost ~]# /etc/init.d/mysqld restart
- 登录MariaDB
mysql -uroot
- 执行
use mysql
切换到mysql库 desc user
查看user表的所有字段update user set authentication_string=password("mima.abc") where user='root';
命令来更改root密码。- 退出MariaDB,删除/etc/my.cnf里面的skip-grant, 重启服务
- 用新密码登录即可
补充
- 使用root用户登录到MariaDB,
use mysql
切换库,然后查看用户有哪些
MariaDB [mysql]> select user,host from user ;
+------+-----------------------+
| user | host |
+------+-----------------------+
| bbs | 127.0.0.1 |
| blog | 127.0.0.1 |
| root | 127.0.0.1 |
| root | ::1 |
| | localhost |
| root | localhost |
| | localhost.localdomain |
| root | localhost.localdomain |
+------+-----------------------+
8 rows in set (0.006 sec)
- 更改普通用户密码
MariaDB [mysql]> update user set authentication_string=password("mima.123") where user='blog';
Query OK, 1 row affected (0.005 sec)
Rows matched: 1 Changed: 1 Warnings: 0
就可以了。
常识
mysql在5.7.36版本之后把密码字段存到了authentication_string字段里,在之前版本存在password字段里。
MariaDB慢查询日志
MariaDB慢日志
- 为什么配置慢日志?配置慢日志是为了帮我们分析MariaDB的瓶颈点(业务的瓶颈点)。一个动态的网站会有数据库的写入读取操作,如果有条执行语句(脚本)特别慢,最终反映到用户访问网站特别慢,结果去查,发现是数据库读取操作慢,优化数据库查询时间,打开就快。整个过程怎么知道是数据库查询慢,可以通过查询慢日志。
配置慢日志
- 进入MariaDB
mysql -uroot -ppasscode
- 执行查询的命令,确认slow日志的状态
MariaDB [(none)]> show variables like 'slow%';
+---------------------+--------------------+
| Variable_name | Value |
+---------------------+--------------------+
| slow_launch_time | 2 |
| slow_query_log | OFF |这里表示slow日志没有开启
| slow_query_log_file | localhost-slow.log |这里表示slow日志文件名称
+---------------------+--------------------+
3 rows in set (0.033 sec)
MariaDB [(none)]> show variables like 'datadir';
+---------------+--------------+
| Variable_name | Value |
+---------------+--------------+
| datadir | /data/mysql/ | 这里是slow日志存放的路径
+---------------+--------------+
1 row in set (0.007 sec)
MariaDB [(none)]> show variables like 'long%';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 | 这里定义的是超过响应时间超过10秒会记录日志
+-----------------+-----------+
1 row in set (0.004 sec)
- 退出MariaDB,打开/etc/my.conf 配置文件,增加以下内容
slow_query_log = ON #打开slow日志
slow_query_log_file = /data/mysql/bbs-slow.log #定义slow日志名字
long_query_time = 2 #响应时间超过2秒就记录。
- 重启MySQL服务。
[root@localhost ~]# /etc/init.d/mysqld restart
- 使用select语句模拟慢查询。
select sleep(5);
- 查询慢日志记录情况
cat /data/mysql/bbs-slow.log
/usr/local/mysql/bin/mysqld, Version: 10.3.12-MariaDB-log (MariaDB Server). started with:
Tcp port: 0 Unix socket: /tmp/mysql.sock
Time Id Command Argument
# Time: 190225 4:32:49
# User@Host: root[root] @ localhost []
# Thread_id: 9 Schema: QC_hit: No
# Query_time: 5.007798 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0
# Rows_affected: 0 Bytes_sent: 63
SET timestamp=1551087169;
select sleep(5);
补充关于MySQL的一个命令
- show processlist ; 用于查看数据库中的查询队列,相当于查看系统的进程,可以比较好的了解数据库是否处于忙碌状态
- show full processlist ;跟上一个命令一样,这个指令会将队列中的查询语句完整的列出来。