mysql資料庫的目錄 了解MySQl資料庫目錄

2021-10-19 19:35:47 字數 3760 閱讀 2902

資料庫目錄是mysql資料庫伺服器存放資料檔案的地方,不僅包括有關表的檔案,還包括資料檔案和mysql的伺服器選項檔案。不同的分發,資料庫目錄的預設位置是不同的。

資料目錄的位置

預設的資料庫位置

預設資料庫的位置編譯在伺服器中。

◆如果您是在乙個源程式分發包中安裝 mysql,典型的預設位置可能是 /usr/local/var;

◆如果在二進位制分發包中安裝 mysql,則為 /usr/local/mysql/ data;

◆在 rpm 檔案中安裝,為 /var/lib/mysql。

◆對於windwos平台上的分發,其位置時basedirdata

資料目錄的位置可以在啟動伺服器時通過--datadir = / path / to / dir 明確地指定。如果您想將資料目錄放置在其他地方而非預設的位置,則這個選項是有用的。

了解資料庫目錄的位置

作為一名 mysql 管理員,您應該知道資料目錄在**。如果執行多個伺服器,那麼您應該掌握所有資料目錄的位置。但是,如果不知道目錄的位置(或許您正在代替前一位管理員,而他留下的記錄很糟糕),有幾種方法可以用來查詢它:

1、可使用 mysqladmin 變數直接從伺服器中得到資料目錄路徑名。在 unix 中,輸出結果類似於如下所示:

$mysqladmin variables

| variable_name           | value

| ansi_mode               | off

| back_log                | 50

| basedir                 | /var/local

| connect_timeout         | 5

| concurrent_insert       | on

| datadir                 | /usr/local/var

該輸出結果指明了伺服器主機中資料目錄的位置 /usr/local/var。

在 windows 中,輸出結果類似於如下所示:

c:mysqlin>mysqladmin variables

| variable_name           | value

| ansi_mode               | off

| back_log                | 50

| basedir                 | c:mysql

| connect_timeout         | 5

| concurrent_insert       | on

如果正在執行多個伺服器,它們將監聽不同的 tcp/ip 埠號和套接字。可以通過提供合適的--port 或 --socket 選項連線到每個伺服器監聽的埠和套接字上:

$mysqladmin –port=port=port_num variables

$mysqladmin –socket=/path/to/socket variables

mysqladmin 命令可在您連線伺服器的任何一台主機上執行。如果需要連線到遠端主機上的伺服器,則使用 --host = host_name 選項:

$mysqladmin –host=host_name varibles

2、在unix平台上,可使用 ps 來檢視任何當前執行 mysql 程序的命令列。試一試下列的命令(根據您的系統所支援的 ps 版本)並查詢顯示在輸出結果中的這些命令的 --datadir:

$ps au | grep mysqld

如果系統執行多個伺服器(因為一次發現了多個資料目錄位置),則 ps 命令將會特別有用。它的缺點是:ps 必須執行在伺服器的主機上,並且除非 --datadir 選項在 mysqld 命令列中明確指定,否則將產生無用的資訊。

3、如果 mysql 從源程式分發包中安裝,可以檢查其配置資訊以確定資料目錄的位置。例如,在最高端的 makefile 中該位置是可用的。但是,要小心:位置是 makefile 中的變數localstatedir 的值,而不是 datadir 的值。同樣,如果分發包定位在 nfs 裝配檔案系統中,並且是用於為幾個主機建立 mysql的,則配置資訊反映最近建立分發包的主機。它可能不顯示您感興趣的主機的資料目錄。

4、如果前面的任何方法都不成功,可使用 find 搜尋資料庫檔案。下列命令將搜尋 .frm(描述)檔案,它是 mysql 安裝程式的組成部分:

$find / -name  「*.frm」 –print

在平台上的搜尋非常簡單,本節就不給出例子了。

在本章的這些例子中,筆者將 mysql 資料目錄的位置表示為 datadir。您可以將其解釋成為您自己的機器中的資料目錄的位置。

的表示法

由 mysql 管理的每個資料庫都有自己的資料庫目錄,它們是資料目錄的子目錄,與所表示的資料庫有相同的名稱。例如,資料庫 my_db 對應於資料庫目錄 datadir/my_db。

這個表示法使得幾個資料庫級的語句的實現是非常容易的。create database db_name 使用只允許對 mysql 伺服器使用者(伺服器執行的unix 使用者)進行訪問的所有權和方式,並在資料目錄中建立乙個空目錄 db_name。這等價於以伺服器主機中的伺服器使用者的身份通過執行下列命令手工建立資料庫:

$ mkdir datadir/db_name 建立資料庫目錄

$ chmod 700 datadir/db_name  使它僅對 mysql 伺服器使用者可訪問

通過空目錄表示新資料庫的方法與其他資料庫系統完全不同,那些資料庫系統甚至要為「空」資料庫建立許多控制檔案或系統檔案。

drop database 語句也很容易實現。drop database db_name 刪除資料目錄中的 db_name 目錄以及其中的所有表檔案。這個語句類似於下列命令:

$rm -rf datadir/db_name

其區別是,伺服器只刪除帶有表的副檔名的檔案。如果已經在該資料庫目錄中建立了其他的檔案,伺服器將使它們保持完整,並且不刪除該目錄本身。

show database 只不過是對應位於資料目錄中的子目錄名稱的乙個列表。有些資料庫系統需要保留乙個列出所有需要維護的資料庫的主表,但是,在 mysql 中沒有這樣的結構。由於資料目錄結構的簡單性,資料庫的列表是隱含在該資料目錄的內容中的,像主表這樣的表可能會引起不必要的開銷。

資料庫表的表示法

資料庫中的每個表在資料庫目錄中都作為三個檔案存在:乙個格式(描述)檔案、乙個資料檔案和乙個索引檔案。每個檔案的基名是該錶名,副檔名指明該檔案的型別。副檔名如表5-1所示。資料和索引檔案的副檔名指明該錶是否使用較老的 isam 索引或較新的 myisam 索引。

當發布定義乙個表結構的 create table tbl_name 語句時,伺服器建立 tbl_name.frm 檔案,它包含該結構的內部編碼。該語句還建立空的資料檔案和索引檔案,這些檔案的初始資訊表明沒有記錄和索引(如果 create table 語句包含索引說明,則該索引檔案將反映這些索引)。描述表的檔案的所有權和方式被設定為只允許對 mysql 伺服器使用者的訪問。

當發布 alter table 語句時,伺服器對 tbl_name.frm 重新編碼並修改資料檔案和索引檔案的內容以反映由該語句表明的結構變化。對於 create 和 drop index 也是如此,因為伺服器認為它們等價於 alter table 語句。drop table 刪除代表該錶的三個檔案。

儘管可以通過刪除資料庫目錄中的對應某個表的三個檔案來刪除該錶,但不能手工建立或更改表。例如,如果 my_db 是當前的資料庫,drop table my_tbl 大致等價於下列命令:

來自於 show tables my_db 的輸出結果正是 my_db 資料庫目錄中 .frm 檔案基名的乙個列表。某些資料庫系

Mysql 資料庫基礎了解

基礎概念 資料庫 dbms 的種類 常見 通過關聯可以查詢到張三的老師和成績 關係型資料庫組成結構發展 結構的目的就是為了怎麼快速和方便的找到需要的資料 層次結構 按照一層一層的分級,找資料避免就要一層一層走,導致需要走沒必要的層級 網狀結構 對於層次結構做了優化,資料上下左右4層都可以走,但是效果...

mysql了解資料庫 MySQL資料庫之了解資料庫

1.1.1 什麼是資料庫 資料庫是乙個資料集合,按某種方式有組織的儲存。可以把資料庫想象成乙個檔案櫃,這個檔案櫃就是存放資料的物理位置,不管資料是按什麼方式擺放的。資料庫 database 儲存有組織的資料的容器 通常是乙個檔案或一組檔案 注意 許多人常用 資料庫 這個術語來代替他們使用的資料庫軟體...

mysql資料庫學習目錄

前面的話 對於前端工程師來說,資料庫並不是主要技能點,但是基本的增刪改查操作還是需要了解的。小火柴將mysql資料庫的學習記錄整理如下 前端學資料庫之基礎操作 前端學資料庫之資料型別 前端學資料庫之資料表操作 前端學資料庫之記錄操作 前端學資料庫之中文亂碼 前端學資料庫之子查詢 前端學資料庫之多表操...