我在创建数据库时遇到问题,导致出现以下错误。
mysql> show grants for 'admin'@'%';
+---------------------------------------------------------------------------------------------------------------------------------+
| Grants for admin@% |
+---------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY PASSWORD '*4ACFE3202A5FF5CF467898FC58AAB1D615029441' WITH GRANT OPTION |
+---------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> create database abc;
ERROR 1006 (HY000): Can't create database 'abc' (errno: 13)
这是我的用户表。
mysql> select host, user from mysql.user;
+-------------+-------+
| host | user |
+-------------+-------+
| % | admin |
| 127.0.0.1 | root |
| ::1 | root |
| IVM-MMC-DGW | root |
| localhost | admin |
| localhost | root |
+-------------+-------+
6 rows in set (0.00 sec)
mysql> show grants;
+-----------------------------------------------------------------------------------------------------------------------------------------+
| Grants for admin@localhost |
+-----------------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED BY PASSWORD '*4ACFE3202A5FF5CF467898FC58AAB1D615029441' WITH GRANT OPTION |
+-----------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
我可以在现有数据库中创建和删除表。
数据目录已具有mysql:mysql权限,登录用户也有权创建新数据库。
这里缺少什么配置?
答案 0 :(得分:28)
MySQL数据目录可能存在权限问题。您可以尝试按如下方式设置权限(调整数据目录的路径)
chown -R mysql:mysql /usr/local/mysql/data
答案 1 :(得分:19)
这可能是由于MySQL拒绝了许可。虽然您设置了datadir=/drbd0/mysql/data
,但默认设置为MySql set socket = /var/lib/mysql/mysql.sock
,因此您应该拥有该目录的权限。
less /etc/group
然后
less /etc/passwd
找到mysql用户名和组名,默认情况下,它是mysql组中的mysql用户。
更改为mysql目录,可能是/var/lib/mysql
,然后键入cd ..
以上一个目录。
chown -R mysql:mysql ./mysql/
如果您将组和用户权限称为differenty
,请将mysql:mysql
替换为不同的内容
答案 2 :(得分:11)
可能是空间问题。 按照这个
如果日志说的话 “[错误]无法启动服务器:无法创建PID文件:设备上没有剩余空间”
按df -hk / var
如果使用的是100%,那么你必须找到填充的文件。
在/ var中找到大文件 find / var / -type f -size + 100000k -exec ls -lh {} \; | awk'{print $ 9“:”$ 5}'
查看您可以删除的文件,然后通过
让我知道这是否有效:)
答案 3 :(得分:7)
对于Mac OS,请使用此命令
sudo chown -R mysql:mysql /usr/local/mysql*
用户mysql
应具有对mysql数据目录的写访问权。
答案 4 :(得分:5)
sudo chown -R mysql:mysql / var / lib / mysql /
答案 5 :(得分:1)
在/etc/mysql/my.cnf中,设置datadir = / home / mysql_data,其中 是数据库文件实际位于您的机器上的位置
答案 6 :(得分:1)
如果你在CentOS上,请关闭SELinux。
答案 7 :(得分:1)
如果您移动mysql文件夹,则重启mysql,它可以正常工作
答案 8 :(得分:1)
检查您的mysql数据目录权限
默认情况下,数据目录在'/etc/my.conf'中配置
或使用mysqladmin -uroot -p variables | grep datadir
查找目录
默认情况下可能为/var/lib/mysql/
,并使所有者用户和群组成为可能
是mysql。 chown -R mysql:mysql /usr/local/mysql/data
如果步骤1尚未解决,可能是因为您SELinux
,请尝试turn off it。
selinuxenabled && echo enabled || echo disabled
echo 0 > /selinux/enforce
SELINUX=disabled
,然后重新启动。 在不同的操作系统中,SELinux
的配置目录可能不同。
答案 9 :(得分:1)
同样的问题,在我的情况下,我更改了my.cf上的默认目录,而selinux已阻止它。
测试:
setenforce 0
修复(CentOS)
添加上下文并使其永久
semanage fcontext -a -s system_u -t mysqld_db_t "/var/data/mysql(/.*)?" restorecon -Rv /var/data/mysql
来源:https://naveensnayak.wordpress.com/2016/01/14/changing-mysql-data-directory-centos-7/
答案 10 :(得分:0)
运行WAMP并且我遇到了同样的问题,选择了传统的停止并启动所有服务,这对我来说也是如此。之后我能够创建数据库,真的不知道为什么我一开始就无法创建它,因为我没有空间或权限问题。嗯,我希望这有助于WAMP用户
答案 11 :(得分:0)
在我的情况下,这是MySQL数据目录所有者的问题,正如其他人所建议的那样。但是,我服务器上的设置非常罕见,使用了不同的目录,因此这里是更详细的解决方案:
grep 'datadir' $(find /etc -iname my.cnf 2>/dev/null) | awk '{print $3}'
如果MySQL配置正确,则返回例如/var/lib/mysql
如果未返回任何结果,请尝试使用
在整个文件系统中进行搜索 grep 'datadir' $(find / -iname my.cnf 2>/dev/null) | awk '{print $3}'
(这可能需要很长时间)
崩溃:
find /etc -iname my.cnf 2>/dev/null
在/etc
中忽略错误找到了名为my.cnf的文件
grep 'datadir' /etc/mysql/my.cnf
在上一步找到的文件中找到数据目录
awk '{print $3}'
打印来自标准输入的第三列
sudo chown -R mysql:mysql MYSQLDIR
用步骤1中返回的目录路径替换MYSQLDIR
答案 12 :(得分:0)
我最近遇到了这个问题。未创建数据库。它抛出错误。后来我发现磁盘已100%充满,这是由于发生这种情况。权限都还可以。