跳到主内容

琅環笔记

有博学强记者,尝为鹅厂从事。游于洞宫,遇一人于途,问逍遥曰:“君读书几何?”遥曰:“吾之未读者,则二十年内书盖有之也,若二十年外,则吾固已尽读之矣。”其人论议超然,遥颇内服,相与欢甚。因共至一处,大石中忽然有门,引遥入数歩,则别是天地,宫室嵯峨。引入一室中,陈书满架,其人曰:“此PL史也。”又至一室,则曰:“OS志也。”毎室各有奇书,惟一室屋宇颇高,封识甚严,有二犬守之。遥问故,答曰:“此皆操作系统、编程语言、算法分析、生发正骨诸秘籍。”指二犬曰:“此龙也。”历观诸室书,皆Windows以前事,多所未闻者,如「BeOS」、「Solaris」、「FreeBSD」、「LISP」亦皆在焉。遥心乐之,欲赁住数十日,其人笑曰:“君痴矣。此岂可赁地耶?”即命小童送出,遥问地名,对曰:“琅嬛福地也。”

Solution to Can't drop database 'tt4e'; database doesn't exist

问题现象

一台服务器上,有一个数据库怎么也删不掉,但可以显示。

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| xxx                |
+--------------------+
5 rows in set (0.002 sec)

MariaDB [(none)]> drop database xxx;
ERROR 1008 (HY000): Can't drop database 'xxx'; database doesn't exist

问题解决

  1. 用 ps aux 查看进程,发现 mariadbd 进程,发现未使用配置文件,则使用的默认路径配置;

  2. 查看默认配置文件

    cat /etc/mysql/mariadb.cnf
    cat /etc/mysql/mariadb.conf.d/50-server.cnf
  3. 发现默认配置文件中未指定数据路径,则进入默认数据路径,并查看文件权限,发现 xxx 的所有者是 root 用户

    cd /var/lib/mysql/
    ls -l
  4. 猜测是使用了不同的用户创建的数据库导致没有权限,执行 cat /etc/passwd 查看用户,发现 mysql 用户;

  5. 于是将 xxx 目录和下面文件的所有者修改为 mysql

    sudo chown mysql:mysql xxx/
    cd xxx/
    ls
    sudo chown mysql:mysql db.opt
  6. 执行 systemctl restart mysql 重启服务,进入 mysql 命令行客户端,再次执行 drop database xxx 即成功删除。

评论

Comments powered by Disqus