Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql在哪里存储数据?_Mysql - Fatal编程技术网

mysql在哪里存储数据?

mysql在哪里存储数据?,mysql,Mysql,mysql在哪里存储数据?我发现(通过使用mysql>SELECT@@datadir)它在var/lib/mysql中,但不可能是这样。我有一个相当大的数据库(4GB),名为“bot”,但“bot”子目录(var/lib/mysql/bot)中的所有文件只有280KB。其余的在哪里 还有一件事——99%的数据库大小是其中一个表中的一个文本列——我知道mysql将其存储在单独的文件中,但它会为每个记录创建一个文件吗 我在var/lib/mysql目录中发现了一个名为ibdata1的大文件-它的大小

mysql在哪里存储数据?我发现(通过使用mysql>SELECT@@datadir)它在var/lib/mysql中,但不可能是这样。我有一个相当大的数据库(4GB),名为“bot”,但“bot”子目录(var/lib/mysql/bot)中的所有文件只有280KB。其余的在哪里

还有一件事——99%的数据库大小是其中一个表中的一个文本列——我知道mysql将其存储在单独的文件中,但它会为每个记录创建一个文件吗

我在var/lib/mysql目录中发现了一个名为ibdata1的大文件-它的大小超过8GB-它是什么?(顺便说一句,var/lib/mysql目录中还有其他数据库)。

来自:

窗口

  • 找到my.ini,它存储在MySQL安装文件夹中
  • 例如,
    C:\ProgramFiles\MySQL\MySQL Server 5.1\my.ini

  • 用我们喜欢的文本编辑器打开“my.ini”
  • 查找
    “datadir”
    ,这是MySQL在Windows中存储数据的位置


    Linux

  • 使用find/-name my.cnf命令查找my.cnf
  • 像这样查看
    my.cnf
    文件:
    cat/etc/mysql/my.cnf
  • 查找
    “datadir”
    ,这是MySQL在Linux系统中存储数据的地方

  • 在字里行间阅读-这是innodb数据库吗?在这种情况下,实际数据通常以ibdata1的名称存储在该目录中。此文件包含您的所有表,除非您专门设置mysql为每个表使用一个文件()

    至少在5.6版中,mysql Workbench中的管理选项卡显示它位于C:\驱动器中名为ProgramData的隐藏文件夹中。我的默认数据目录是

    C:\ProgramData\MySQL\MySQL服务器5.6\data


    。每个数据库都有一个文件夹,每个表在这里都有一个文件。

    我刚刚在
    Windows 10
    上安装了
    MySQL Server 5.7
    ,而
    my.ini
    文件位于这里
    c:\ProgramData\MySQL\MySQL Server 5.7\my.ini


    Data
    文件夹(创建数据库的地方)在这里
    C:/ProgramData/MySQL/MySQL Server 5.7\Data
    在MySQL Server 8.0中,在Windows上,位置是
    C:\ProgramData\MySQL\MySQL Server 8.0\Data
    正如@PhilHarvey所说的,您可以使用
    mysqld--verbose--help
    谢谢,但我相信你只读了我问题的标题,我完全按照你所描述的做了,但正如我在帖子中所写的:“mysql在哪里存储数据?我发现(通过使用mysql>SELECT@@datadir)它在var/lib/mysql中-但不可能是这样。我有一个相当大的数据库(4GB),名为‘bot’,但所有文件都在‘bot’子目录中(var/lib/mysql/bot)只有280KB。其余的在哪里?“所以找到数据目录并找到最大的文件或文件集,这并不难。另外,看看发布的另一个答案。正如我所写的,我找到了“ibdata1”文件,但它在主目录中,而不是在数据库的子目录中,所以我似乎不可能找到这个文件,而不是使用“查找”在整个文件系统上,您可以这样确定数据目录:mysqld--verbose--help | grep datadir您使用的是什么存储引擎?谢谢!事实上我忘了提到它是innodb。您说文件(ibdata1)“包含所有表”,但看起来它实际上包含所有数据库中的所有表?您知道这是否有原因吗?这似乎很愚蠢…还有一件事-我可以更改此选项吗(每个表的innodb文件)现在,当一个数据库已经存在并且包含记录时?是的,对不起,应该说所有数据库。这并不愚蠢,请看这里。只能通过停止mysql,更改选项,然后重新启动来更改此选项。对不起,但我从未尝试拆分innodb,我建议使用mysqldump备份数据库,更改选项,然后重新加载数据库。谢谢!我一定会这样做。使用此选项,我能够解决“mysql.connector.errors.DatabaseError:1007(HY000)”。
    #Path to installation directory. All paths are usually resolved relative to this.
    basedir="C:/Program Files/MySQL/MySQL Server 5.1/"
     
    #Path to the database root
    datadir="C:/Documents and Settings/All Users/Application Data/MySQL/MySQL Server 5.1/Data/"
    
    yongmo@myserver:~$ find / -name my.cnf
    find: /home/lost+found: Permission denied
    find: /lost+found: Permission denied
    /etc/mysql/my.cnf
    
    yongmo@myserver:~$ cat /etc/mysql/my.cnf
    #
    # The MySQL database server configuration file.
    #
    # You can copy this to one of:
    # - "/etc/mysql/my.cnf" to set global options,
    # - "~/.my.cnf" to set user-specific options.
    # 
    [mysqld]
    #
    # * Basic Settings
    #
    user   = mysql
    pid-file = /var/run/mysqld/mysqld.pid
    socket  = /var/run/mysqld/mysqld.sock
    port   = 3306
    basedir  = /usr
    datadir  = /var/lib/mysql
    tmpdir  = /tmp
    language = /usr/share/mysql/english
    skip-external-locking