MySQL 杂项

2018-05-23 database mysql

简单记录下 MySQL 常见的一些操作。

初始化密码

MySQL 5.7 在初始化时会生成默认的密码,当然可以在初始化的时候使用 --initialize-insecure 参数不设置密码,不过通过 mysql 客户端登陆的时候,仍会提示输入密码。

对于自动化脚本,最好的方式是在启动 MySQL 服务器时使用 --skip-grant-tables 参数,然后更新密码。

----- MySQL5.7.6及以上版本
mysql> UPDATE mysql.user SET authentication_string=PASSWORD('newpass') WHERE user='root';
----- MySQL 5.7.5及之前版本
mysql> UPDATE mysql.user SET password=PASSWORD('newpass') WHERE user='root';

----- 授权远程访问
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'newpass' WITH GRANT OPTION;

注意,如果使用了 --skip-grant-tables 参数,如果使用如下密码更新时,将会报错。

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new-password';

pager

如果一次查看的数据集比较大,可以通过 pager 命令设置显示。

----- 使用less查看
mysql> pager less
PAGER set to 'less'

----- 如果查看InnoDB状态,也可以使用如下方式
mysql> pager grep sequence
PAGER set to 'grep sequence'
mysql> SHOW ENGINE INNODB STATUS\G SELECT sleep(60); SHOW ENGINE INNODB STATUS\G
Log sequence number 84 3836410803
1 row in set (0.06 sec)

1 row in set (1 min 0.00 sec)

Log sequence number 84 3838334638
1 row in set (0.05 sec)