Mysql使用过程中碰到的几个问题
目录
2.mysql 5.7.27或者以上版本遇到的版本问题造成的原因
1.mysql的安装碰到的几个坑
小编是一位刚学习Java不久的小白,最近学到数据库就也试着安装MySQL软件。去官网下载软件时发现5.7版本里只有5.7.27,而我在网上找的安装教程也只是版本号相近,这似乎也为我接下来配置过程中碰到的问题埋下了伏笔。
第一个问题: 命令提示符输入net start mysql 服务无法启动
按照网上的教程,安装过程还是很顺利的。但是在配置过程中就遇到了麻烦。首先就是命令提示符输入net start mysql后,出现了如下图的情况
后来,我也是看了别人的博客才找到了问题所在(博客地址:https://blog.csdn.net/JWbonze/article/details/80241417 小编所找到的办法只是该博客中其中一种,如果读者跟我不一样,可以点击链接了解详情)。
原来我服务窗口所写的名称是MySQL57,那么命令提示符就得输入net start mysql57
如此,第一个问题终于解决了。
第二个问题:密码
按照网上的安装教程,接下来就是输入密码
教程里说到,密码在data文件夹中以.err结尾的文件中,粘贴复制密码进来之后就可以使用了。
第三个问题就是进行改密码:
方法1: 用SET PASSWORD命令
首先登录MySQL。
格式:mysql> set password for 用户名@localhost = password('新密码');
例子:mysql> set password for root@localhost = password('123');
方法2:用mysqladmin
格式:mysqladmin -u用户名 -p旧密码 password 新密码
例子:mysqladmin -uroot -p123456 password 123
方法3:用UPDATE直接编辑user表
首先登录MySQL。
mysql> use mysql;
mysql> update user set password=password('123') where user='root' and host='localhost';
mysql> flush privileges;
方法4:在忘记root密码的时候,可以这样
以windows为例:
1. 关闭正在运行的MySQL服务。
2. 打开DOS窗口,转到mysql\bin目录。
3. 输入mysqld --skip-grant-tables 回车。--skip-grant-tables 的意思是启动MySQL服务的时候跳过权限表认证。
4. 再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),转到mysql\bin目录。
5. 输入mysql回车,如果成功,将出现MySQL提示符 >。
6. 连接权限数据库: use mysql; 。
6. 改密码:update user set password=password("123") where user="root";(别忘了最后加分号) 。
7. 刷新权限(必须步骤):flush privileges; 。
8. 退出 quit。
9. 注销系统,再进入,使用用户名root和刚才设置的新密码123登录。
2.mysql 5.7.27或者以上版本遇到的版本问题造成的原因
1.Mysql遇到的大坑:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre
Expression #1 of SELECT list is not in GROUP BY clause and contains
nonaggregated column ‘sss.month_id’ which is not functionally
dependent on columns in GROUP BY clause; this is incompatible with
sql_mode=only_full_group_by
第一次遇到这样的问题,这是由于MySQL启用了ONLY_FULL_GROUP_BY SQL模式(默认情况下)。说实话,我当时慌了,百度,谷歌搜了很多办法,如修改mysql的my.ini配置文件等,但是并没有什么用,如果你也遇到这样的问题,也没有解决,不妨试试我的方法。
打开Navicat或者SQLyog或者其他数据库管理工具,执行如下命令:
select @@global.sql_mode
你会看到查询出来的字符串中,有ONLY_FULL_GROUP_BY,这也正是祸害的根源,因此,我们的目的就是去掉这个值。所以,执行如下命令:
set @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
执行完后,应该已经成功了,不妨再使用select @@global.sql_mode查看一下。
2.mysql 5.7 用8.0版本的驱动可以,5.1版本也可以,5.5、5.6、5.7都不可以(或许这些版本的连接器都是我一厢情愿的)
. 看了下MySQL Connectors 官方文档 上面只有version8.0和version5.1两个版本的文档(看来真的是我想多了)
.version8.0文档上有说明:Connector/J 8.0 provides compatibility with all the functionality of MySQL 5.5, 5.6, 5.7, and 8.0(都兼容,大胆用了)