mysql数据库建表失败处理一则

时间:2022-06-24 22:24:36

今天下午又没啥事干,于是又拿起三思那本mysql来研究,其中他在创表的那一章节里使用了以下语句来创建表:

(system@localhost) [jssdb]> create table jssdb_mc.users(
    -> username varchar(10),
    -> sex tinyint,
    -> birth date,
    -> address varchar(50),
    -> phoneno varchar(15));
ERROR 1005 (HY000): Can't create table 'users' (errno: 13)

我按书上的例子在环境中操作了一遍,发现创建表失败,但按道理来说应该是成功的,后来经过在网上查询,原来问题是这样的:

由于jssdb_mc库mysql用户没有权限操作,所以就会出现这个问题,经过查询,发现jssdb_mc确实只有root才拥权限操作:

[root@localhost data]# ls -l
total 2883612
-rw-rw----. 1 mysql mysql         56 Nov  9 09:15 auto.cnf
-rw-rw----. 1 mysql mysql 2147483648 Nov 19 17:40 ibdatal
-rw-rw----. 1 mysql mysql  268435456 Nov 19 17:40 ib_logfile0
-rw-rw----. 1 mysql mysql  268435456 Nov  6 16:15 ib_logfile1
-rw-rw----. 1 mysql mysql  268435456 Nov  6 16:15 ib_logfile2
drwx------. 2 mysql mysql       4096 Nov 19 17:40 jssdb
drwxr-xr-x. 2 root  root        4096 Nov 19 16:43 jssdb_mc
drwx------. 2 mysql mysql       4096 Nov  6 16:15 mysql
drwx------. 2 mysql mysql       4096 Nov  6 16:15 performance_schema
drwx------. 2 mysql mysql       4096 Nov  6 16:15 test

于是使用chown 命令来更改用户权限:

[root@localhost data]# chown -R mysql:mysql jssdb_mc/
[root@localhost data]# ls -l
total 2883612
-rw-rw----. 1 mysql mysql         56 Nov  9 09:15 auto.cnf
-rw-rw----. 1 mysql mysql 2147483648 Nov 19 17:40 ibdatal
-rw-rw----. 1 mysql mysql  268435456 Nov 19 17:40 ib_logfile0
-rw-rw----. 1 mysql mysql  268435456 Nov  6 16:15 ib_logfile1
-rw-rw----. 1 mysql mysql  268435456 Nov  6 16:15 ib_logfile2
drwx------. 2 mysql mysql       4096 Nov 19 17:40 jssdb
drwxr-xr-x. 2 mysql mysql       4096 Nov 19 16:43 jssdb_mc
drwx------. 2 mysql mysql       4096 Nov  6 16:15 mysql
drwx------. 2 mysql mysql       4096 Nov  6 16:15 performance_schema
drwx------. 2 mysql mysql       4096 Nov  6 16:15 test

问题解决,出现这个原因是由于这个jssdb_mc库是手动创建的,而且是用root管理员来创建,所以mysql没有权限执行操作,所以以后各位朋友如有遇到该情况要检查情况。