MySQL 常见问题汇总 2019-07-29 默认分类 暂无评论 814 次阅读 [TOC] Q1. 忘记 MySQL 的 root 密码 1. 登录到数据库所在的服务器,手工 kill 掉 mysql 进程。 - (1) 登录到数据库所在的服务器,手工 kill 掉 MySQL 进程: ``` root@bogon:/data/mysql# kill `cat ./mysql.pid` ``` 其中,mysql.pid 指的是 MySQL 数据目录下的 pid 文件,它记录了 MySQL 服务的进程号。 - (2) 使用 --skip-grant-tables 选项重启 MySQL 服务: ``` zj@bogon:/data/mysql$ sudo /usr/local/mysql/bin/mysqld --skip-grant-tables --user=root & ``` `--skip-grant-tables` 选项意思是启动 MySQL 服务时跳过权限表认证。 启动后,连接到 MySQL 的 root 将不需要口令。 - (3) 用空密码的 root 用户连接到 mysql ,并且更改 root 口令: ``` [zj@bogon:/usr/local/mysql/bin$] mysql -uroot Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.7.18-log Source distribution Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. MySQL [(none)]> set password = password('123456'); ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement MySQL [(none)]> use mysql Database changed MySQL [mysql]> update user set authentication_string=password('123456') where user="root" and host="localhost"; Query OK, 1 row affected, 1 warning (0.02 sec) Rows matched: 1 Changed: 1 Warnings: 1 MySQL [mysql]> flush privileges; Query OK, 0 rows affected (0.00 sec) MySQL [mysql]> exit; Bye ``` 由于使用了 `--skip-grant-tables `选项启动, 直接更新 user 表的 authentication_string (测试版本为5.7.18,有的版本密码字段是 ‘password’)字段后, 更改密码成功。刷新权限表,使权限认证重新生效。 重新用 root 登录时,就可以使用刚刚修改后的口令了。 Q2. MySQL - 关闭 ONLY_FULL_GROUP_BY? ``` SELECT list is not in GROUP BY clause and contains nonaggregated column ‘db.table.col’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by ``` >升级MYSQL5.7是为了更好的性能,据我猜测,MYSQL5.7对sql_mode的限制, 也是为了更好的查询性能。所以如果在开发阶段,如果要使用mysql5.7版本 建议大家阅读一下5.7的文档,然后将自己的sql写的更严谨, 尽量少用select * ,只查出自己想要的数据列即可。 >mysql 5.6,居然可以不像oracle那样,group by中的列一定要出现在select中,除非强制sqlmode中使用ONLY_FULL_GROUP_BY,但5.7中好像默认使用ONLY_FULL_GROUP_BY了 执行 `SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));` 即可关闭 文章目录 Q1. 忘记 MySQL 的 root 密码 Q2. MySQL - 关闭 ONLY_FULL_GROUP_BY? 标签: mysql, 汇总 转载请注明文章来源 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭