MySQL篇

1.MySQL初始化报错:OS errno 13 - Permission denied

  • 问题简述
    在学习spring框架过程中第一次接触MySQL,按照教程下载并编写好配置文件后,在控制台中使用命令mysqld --initialize --console对MySQL进行初始化,结果报错:
mysqld: Can't create directory 'C:\Program Files\MySQL\mysql-8.0.19\data\' (OS errno 13 - Permission denied)
  • 解决方案
    阅读报错信息,发现是由于系统权限问题导致命令无法在指定目录下创建文件夹。因此应该只需要修改MySQL目录下文件夹的操作权限即可。
    修改文件夹权限

    如上图在目录C:\Program Files\MySQL\mysql-8.0.19将Users和ALL APPLICATION PACKAGES两个组的权限均改为完全控制后,再次运行初始化命令,初始化成功,问题解决。
  • 心得体会:
    Win10下的C:\Program Files目录虽然是应用程序专用目录,但普通用户的权限却默认为只读,因此可以预想到将MySQL安装在此目录下会导致一系列的权限问题。于是我直接釜底抽薪,将cmd修改为默认以管理员身份运行。
    修改控制台快捷方式属性

2.MySQL初次登陆报错:Can't connect to MySQL server on 'localhost'

  • 问题简述:
    MySQL完成安装后初次登陆root用户,输入密码后却一直提示错误信息:
ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
  • 解决方案:
    查阅资料得知,该错误是由于MySQL刚安装好初次登陆时相关服务没有开启导致,在控制台中输入命令net start mysql,显示如下:
C:\Windows\system32>net start mysql
MySQL 服务正在启动 .
MySQL 服务已经启动成功。

之后即可正常登录,问题解决。

  • 心得体会
    一些系统软件安装完成后的重启计算机步骤是不是就是为了启动相关服务呢?
    另:初次登录后用 ALTER USER USER() IDENTIFIED BY 'newpassword';命令修改密码后才可进行其他操作。

3.IDEA连接MySQL报错:The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone

  • 问题简述
    在IDEA中用Maven项目连接数据库进行操作时报错,具体错误信息如下:
Exception in thread "main" java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the 'serverTimezone' configuration property) to use a more specifc time zone value if you want to utilize time zone support.
  • 解决方案
    通过查阅资料得知,当在IDEA中连接MySQL数据库时,导入并使用mysql connector/j 6.x以上的包就会出现如上错误。解决方法是在url后通过serverTimezone选项配置时区。具体方法如下:
    在原本的url
jdbc:mysql://localhost:3306/spring_test

后添加?serverTimezone=UTC:

jdbc:mysql://localhost:3306/spring_test?serverTimezone=UTC

配置好时区(UTC),即可成功连接数据库

  • 心得体会:查阅了有关MySQL时区的相关资料,虽然并不是非常明白,但也知道了这个问题的根源来自于MySQL数据库时区并非东八区,而是UTC(协调世界时),比东八区(北京时间)少了八个小时,而当使用sql语句时则默认使用东八区,因此产生了两者之间的时区冲突represents more than one time zone,而6.x之前的版本或许会在sql语句没有涉及时间时忽略此问题。所以解决此错误的根源在于规定好统一的时区。上述方法虽然步骤简单,但每次都要进行配置实际任务量繁琐,因此更釜底抽薪的办法是将数据库的时区直接修改为东八区,对应的sql语句为:
set global time_zone = '+8:00';//设置时区为东八区
flush privileges;//刷新权限

或者直接在配置文件中对MySQL的默认时区进行设置,windows为my.ini位于安装目录下,linux为my.cnf,在etc文件夹下,没有可自己创建。在文件中添加以下代码:

[mysqld]
//使用默认时区东八区
default-time_zone = '+8:00'
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容