如题,本人的一次真实场景,在一次重启阿里云Linux服务器之后,在这个服务器运行的javaWeb项目调用接口500报错SQLexception,提示读取不到数据库的数据,然后我进到服务器进入mysql看看是不是有问题,然后以下对mysql的命令操作,输入命令show databases; 列出所有数据库,然后 use caogenofficialwebsite; 然后输入show tables;这时报错ERROR 1018 (HY000): Can’t read dir of ‘.’ (errno: 13 - Permission denied);这是提示没有权限读取数据表,所以我找mysql的datadir文件,看它的权限是谁拥有的
但是这个服务器环境极乱,找也麻烦,所以我直接用命令查看当前运行的mysql的datadir变量的路径,步骤如下:
- 1.进入mysql命令行,运行show variables like ‘datadir’;效果如下,
- 2.上面的的值就是datadir文件的路径,cd /var/lib/mysql路径下,ll命令查看所有文件的具体信息,包括权限,注意此命令是两个小写的L,然后效果如下:
看,中间的我的项目,权限不是mysql了,而是root用户了,所以调用接口,访问数据库时候都报500SQLException(errno: 13 - Permission denied),文件属于root用户,其它用户无法写和读,这就是本次异常的原因。