MySQL 创建新用户并分配数据库权限

创建了一个名为 wiki 的数据库,想用一个名为 wiki 的用户来管理它。 CREATE USER 'wiki'@'localhost' IDENTIFIED BY 'wiki'; GRANT ALL ON wiki.* TO 'wiki'@'localhost'; 参考:https://dev.mysql.com/doc/refman/8.0/en/grant.html

MySQL8 忘记 root 密码怎么重置

我忘记了 MySQL 的 root 密码,需要重新设置。 Step1:创建初始化文件 创建一个名为 mysql-init 的文件,在里面写入新密码,内容如下: ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass'; Step2:启动 MySQL 指定初始化文件,即可完成密码重置。 mysqld --init-file=/home/me/my

慢 SQL 定位与优化

0 基本思路 基本思路如下: 根据慢日志定位慢查询 sql 使用 explain 等工具分析 sql 修改 sql,尽量让 sql 走索引 下面依次展开。 1 根据慢日志定位慢查询 sql 先来认识一下 mysql 中的几个变量: long_query_time:定义了查询时间超过多少秒,即认为属于慢 sql slow_query_log:一个开关,控制是否记录慢日志 slow_query_log

深入理解 B+ 树

1 什么是 B+ 树?有什么用? 1.1 数据结构 B+ 树是一种数据结构,是大多数 MySQL 存储引擎的默认索引类型,用于提高查询效率。 B Tree 指的是 Balance Tree,也就是平衡树。平衡树是一颗查找树,并且所有叶子节点位于同一层。 B+ Tree 是基于 B Tree 和叶子节点顺序访问指针进行实现,它具有 B Tree 的平衡性,并且通过顺序访问指针来提高区间查询的性能。

实战首选缓存策略,保证 Redis 和 MySQL 的一致性

(这里说的“首选”,是一般而言。根据具体情况,可能有更合适的方案。) 1 关于缓存的共识 想使用缓存,首先要达成以下共识: 缓存必须要有过期时间; 保证数据库跟缓存的最终一致性即可,不必追求强一致性。 尤其是第二点,这是一个 TradeOff。如果非得要求强一致性,就不要用缓存。 本文讨论的策略,只是保证最终一致性。 2 实战首选:旁路缓存策略(Cache-Aside) 进入正题。我在实际工作中,

docker 运行 phpMyAdmin

phpMyAdmin 有官方镜像,用起来很方便。 在 8090 端口启动,命令如下: docker run -d --name phpmyadmin -e PMA_ARBITRARY=1 -p 8090:80 phpmyadmin 这里设置了环境变量 PMA_ARBITRARY=1,可以在登陆框中输入 MySQL 服务器地址(否则不会显示这个输入框)。 上面那条命令运行之后,phpmyadmin

docker 启动 mysql5.7

电脑里装的是 mysql 8.0,运行某个项目需要用到 5.7,于是用 docker 启动一个 mysql。 命令如下,备忘: docker pull mysql:5.7 // 拉取镜像 docker images // 查看镜像,确保已经拉取成功 docker run -p 3306:3306 --restart=always --privileged=true --name mysql57 -

MySQL 导出导入(数据库备份与恢复)

备份 导出指定数据库数据 mysqldump -uroot -p --databases db1 db2 db3  > all_database.sql 导出全部数据库数据 mysqldump -uroot -p --all-databases > all_database.sql 恢复 导入数据 mysql -uroot -p < all_database.sql  

用守护进程保护服务器上的 MySQL

问题背景 迁移到阿里云后,经常出现 MySQL 异常退出的问题。导致博客打不开。每次都是我发现之后,去服务器上重启 MySQL。 解决方案:用守护进程来监控 MySQL 的状态,如果发现它挂了,就自动重启。 编写守护进程代码 用 shell  脚本来写守护进程,比较方便。 代码如下(mysql-deamon.sh): #!/bin/sh while true; do   status=$(serv