當前位置:首頁 » 數據倉庫 » mysql修改資料庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

mysql修改資料庫

發布時間: 2023-03-22 14:44:12

A. mysql如何修改資料庫目錄

MySQL默認的數據文件存儲目錄為/var/lib/mysql。假如要把MySQL目錄移到/home/data下需要進行下面幾步:
1、home目錄下鉛鄭建立data目錄
cd /home
mkdir data
2、把MySQL服務進程停掉
mysqladmin -u root -p shutdown
3、把/var/lib/mysql整個目錄移到/home/data
mv /var/lib/mysql/home/data/
這樣就把MySQL的數據文件移動到了/home/data/mysql下。
4、找到my.cnf配置文件
如果/旁簡etc/目錄下沒有my.cnf配置文件,請到/usr/share/mysql/下找到*.cnf文件,拷貝其中一個到/etc/並改名為my.cnf)中。命令如下:

[root@test1 mysql]# cp /usr/share/mysql/my-medium.cnf/etc/my.cnf

5、編輯MySQL的配置文件/etc/my.cnf
為保證MySQL能夠正常工作,需要指明mysql.sock文件的產生位置。修改socket=/var/lib/mysql/mysql.sock一行中等號右邊的值為:/home/mysql/mysql.sock。操作如下:

vi my.cnf (用vi工具編輯my.cnf文件,找到下列數據修改之槐啟頌)
# The MySQL server
[mysqld]
port= 3306
#socket = /var/lib/mysql/mysql.sock(原內容,為了更穩妥用「#」注釋此行)
socket = /home/data/mysql/mysql.sock(加上此行)

6、修改MySQL啟動腳本/etc/init.d/mysql
最後,需要修改MySQL啟動腳本/etc/init.d/mysql,把其中datadir=/var/lib/mysql一行中,等號右邊的路徑改成你現在的實際存放路徑:home/data/mysql。

[root@test1 etc]# vi/etc/init.d/mysql
#datadir=/var/lib/mysql(注釋此行)
datadir=/home/data/mysql (加上此行)

7、重新啟動MySQL服務

/etc/init.d/mysqlstart

或用reboot命令重啟Linux
如果工作正常移動就成功了,否則對照前面的7步再檢查一下。
還要注意目錄的屬主和許可權。

B. 如何修改MySQL資料庫名稱

修改MySQL資料庫名稱的方法如下:

1.語句修改法:

RENAME DATABASE db_name TO new_db_name
這個語法在mysql 5.1.7中被添加進來,到了5.1.23又去掉了。

2.如果所有表都是MyISAM類型的話,可以改文件夾的名字
把data目錄中的db_name目錄重命名為new_db_name


3.重命名所有的表
代碼如下:

C. 如何修改MySQL資料庫數據存儲盤

在Windows操作系統中,如果我們通過MySql的全自動安裝包安裝資料庫,那麼資料庫的數據將會默認被存儲在C盤中,而C盤作為系統盤,一般情況下我們並不想放和系統無關的一些內容。那麼就需要將這些資料庫數據移動到其他盤中,如何能夠快捷方便的移動這些數據呢?

步驟其實也比較簡單。

首先,MySql的資料庫數據會被默認的安裝在C盤的ProgramData目錄下,我們進入到ProgramData後,找到MySql文件夾,根據自己安裝的版本不同,在MySql文件夾下會有MySql Server *.*的文件夾,點擊進入後,就可能看到一個叫Data的文件夾。

然後復制Data文件夾到你想要移動的目錄下,例如:我想要移動到D盤的MySqlData下。

接下來,我們需要停止MySql服務。

可以鏈首在任務欄的搜索中,搜索「服務」,然後找到服務組件的應用並打卡。

在服務組件的頁面,找到「服務(本地)」,然後選中,找到名為「MySQL」開頭的服務,並停止它。

當然,還有一個簡單的辦法,就是先使用「Windows + R」快捷鍵打開運行工具,然後輸入cmd回車打開「命令提示符」;或者在任務欄上搜索cmd,使用管理員打開「命令提示符」。

然後在「命令提示符」中,輸入net stop mysql,當然,如果你和我一樣是5.*的版本,例如我的是5.7版本的mysql,那麼你需要輸入「net stop mysql57」。

然後就會提示MySQL57 服務停止了。

這時,我們使用記事本打開mysql的配置文件my.ini,就在我們剛才移動Data的MySQL目錄下。然後找到datadir配置,修改成我們的新目錄並保存。

然後重新啟動服務,啟動方式和停止方式一樣,在服務中右鍵MySQL的服務,然後選擇啟動。或者通過cmd,輸入net start mysql或者好像我一樣,輸入net start mysql57。

當然,這里悶喚族有可能會啟動服務失敗,啟動服務失敗的原因有可能是你用來放Data的文件目錄的許可權問題,這是我們右鍵這個目錄,然後在安全的選項螞弊卡中加上NETWORK SERVICE的角色,許可權是完全控制,然後保存。再啟動服務試試?應該就OK了。

最後,打開你的mysql客戶端試試是否成功了吧,確認無誤後,就可以把之前的Data文件夾刪掉了。

D. 如何修改MySql資料庫的用戶名和密碼

修改mysql資料庫的用戶名和密碼

更改密碼

1、mysql -u root -p

2、Enter password:***

3、mysql>use mysql; #選擇資料庫

4、Database changed

5、mysql> UPDATE user SET password=PASSWORD("新密碼") WHERE user='你的用戶名';

6、mysql> FLUSH PRIVILEGES;

7、mysql> quit;

(4)mysql修改資料庫擴展閱讀:

mysql常用命令:

安裝(基於centos)

yum -y install mariadb mariadb-server #centos7版本

yum -y install mysql mysql-server #centos7以下版本

啟動

service mysqld start #開啟 centos7以下版本

chkconfig mysqld on #設置開機自啟

OR

systemctl start mariadb #centos7

systemctl enable mariadb

設置密碼

1 、mysqladmin -u root -p123 password '1234' #修改root用戶密碼

2、進入mysql庫修改user表
mysql>use mysql;
mysql>update user set password=password('你的密碼') where user='root';
mysql>flush privileges;

登錄

mysql #本地登錄,默認用戶root,空密碼,用戶為[email protected]

mysql -uroot -p1234 #本地登錄,指定用戶名和密碼,用戶為[email protected]

mysql -uroot P埠號 -h 192.168.31.95 -p密碼 #遠程登錄,用戶為[email protected]

查看

ps aux |grep mysqld #查看進程

netstat -an |grep 3306 #查看埠

E. 怎樣在mysql裡面修改資料庫名稱

被取消的命令MySQL 之前提供了一個 rename database db_old to db_new 的命令來直接對資料庫改名,可能由於實現的功能不完備(比如,這條命令可能是一個超大的事務,或者是由於之前的表很多還是 MyISAM 等),後來的版本直接取消了這條命令。更改資料庫名大致上有以下幾種方案:
一、mysqlmp 導入導出要說最簡單的方法,就是直接用 mysqlmp 工具,在舊庫導出再往新庫導入(最原始、最慢、最容易想到)的方法:舊庫 yttdb_old 導出(包含的對象:表、視圖、觸發器、事件、存儲過程、存儲函數賣橘兆)

二、改整庫的表名利用 MySQL 更改表名的方法來批量把舊庫的所有表依次遍歷,改名為新庫的表。這種方法比第一種要快很多倍,但是沒有第一步操作起來那麼順滑,不能一步到位。比如,要把資料庫 yttdb_old 改名為 yttdb_new,如果資料庫 yttdb_old 里只有磁碟表,那很簡單,直接改名即可。或者寫個腳本來批量改,非常簡單。但是一般舊庫里不只有磁碟表,還包含其他各種對象。這時候可以先考慮把舊庫的各種對象導出來,完了在逐一改完表名後導進去。

三、歷史方案其實在 MySQL 早期還有一種方法。假設 MySQL 部署好了後,所有的 binlog 都有備份,並且二進制日誌格式還是 statement 的話,那就可以簡單搭建一台從機,讓它慢慢追主機到新的庫名,等確切要更改舊庫的時候,再直接晉升從機為主機即可。這里只需要從機配置一個中租參數來把舊庫指伍或向為新庫:replicate-rewrite-db=yttdb_old->yttdb_new不過這種局限性很大,不具備標准化,不推薦。
總結其實針對 MySQL 本身改庫名,大致就這么幾種方法:

  • 如果數據量小,推薦第一種;

  • 數據量大,則推薦第二種;

  • 數據量巨大,那就非 MySQL 本身能解決的了。

  • 可通過部署第三方 ETL 工具,通過解析 MySQL 二進制日誌或其他的方式來把舊庫數據直接讀取到新庫達到改名的目的等等。

F. 如何更改MySQL資料庫編碼為UTF-8或者GB2312

mysql 創建 資料庫時指定編碼很重要,很多開發者都使用了默認編碼,亂碼問題可是防不勝防。制定資料庫的編碼可以很大程度上避免倒入導出帶來的亂碼問題。

網頁數據一般採用UTF8編碼,而資料庫默認為latin 。我們可以通過修改資料庫默認編碼方式為UTF8來減少資料庫創建時的設置,也能最大限度的避免因粗心造成的亂碼問題。

我們遵循的標準是,資料庫,表,欄位和頁面或文本的編碼要統一起來

我們可以通過命令查看資料庫當前編碼:

mysql> SHOW VARIABLES LIKE 'character%';

發現很多對應的都是latin1,我們的目標就是在下次使用此命令時latin1能被UTF8取代。

第一階段:

mysql設置編碼命令

[sql]view plain

  • SETcharacter_set_client=utf8;

  • SETcharacter_set_connection=utf8;

  • SETcharacter_set_database=utf8;

  • SETcharacter_set_results=utf8;

  • SETcharacter_set_server=utf8;

  • 然後mysql> SHOW VARIABLES LIKE 'character%';你可以看到全變為utf8
  • mysql> SHOW VARIABLES LIKE 'character%';

    +--------------------------+---------------------------------------------------------+

    | Variable_name | Value |

    +--------------------------+---------------------------------------------------------+

    | character_set_client | utf8 |

    | character_set_connection | utf8 |

    | character_set_database | utf8 |

    | character_set_filesystem | binary |

    | character_set_results | utf8 |

    | character_set_server | utf8 |

    | character_set_system | utf8 |

    | character_sets_dir | C:Program FilesMySQLMySQL Server 5.0sharecharsets |

    +--------------------------+---------------------------------------------------------+

    8 rows in set

G. 怎樣在mysql裡面修改資料庫名稱

常見的主要有三種方法:

  1. 如果所有表都是MyISAM類型的話,可以直接修改文件夾的名字。
    關閉mysql→把data目錄中的db_name目錄重命名為new_db_name→開啟mysql

  2. 新建資料庫,在新的資料庫里重命名所有舊資料庫中的表,再刪除舊的資料庫。具體操作命令如下:創建新的資料庫→重命名數據表名稱→刪除舊的資料庫。

    CREATE DATABASE new_db_name;
    RENAME TABLE db_name.table1 TO new_db_name.table1,db_name.table2 TO new_db_name.table2;
    DROP DATABASE db_name;

  3. 利用mysqlmp命令從舊的數據導出數據,再導入新資料庫。具體操作命令如下:導出數據→創建新的資料庫→導入數據→刪除舊的資料庫。

    mysqlmp -u root -p -h ip db_name > db_name_mp.SQL
    mysql -u root -p -h ip -e 「CREATE DATABASE new_db_name」
    mysql -u root -p -h ip new_db_name < db_name_mp.SQL
    mysql -u root -p -h ip -e 「DROP DATABASE db_name」

H. mysql 更改資料庫字元編碼的方法

mysql如何更改資料庫字元編碼?藉助客戶端工具很容易就可以更改了,下面來看一下。

打開navicat客戶端工具,在兆戚左邊找到要更改的資料庫。

右鍵點擊這個資料庫,在菜單上渣裂點擊資料庫屬性選項。

在彈出的屬性族梁陵窗口上,點擊默認字元集下的下拉框。

在彈出的下拉選項里,點擊選中要使用的字元集就行了,比如選擇常用的utf8字元集,點擊ok按鈕就行了。

I. mysql資料庫怎麼修改

mysql中修改資料庫目錄方法:
操作步驟:
1.檢查mysql資料庫存放目錄
mysql -u root -prootadmin
#進入資料庫
show variables like '%dir%';
#查看sql存儲路徑
(查看datadir 那一行所指的路徑)
quit;

2.停止mysql服務
service mysqld stop

3.創建新的資料庫存放目錄
mkdir /data/mysql

4.移動/復制之前存放資料庫目錄文件,到新的資料庫存放目錄位置
cp -R /usr/local/mysql/data/* /data/mysql/ #或mv /usr/local/mysql/data/* /data/mysql

5.修改mysql資料庫目錄許可權以及配置文件
chown mysql:mysql -R /data/mysql/
vim /etc/my.cnf
datadir=/data/mysql (制定為新的數據存放目錄)
vim /etc/init.d/mysqld
datadir=/data/mysql

6.啟動資料庫服務
service mysqld start

說明:根據以上的簡單6步操作,已經成功的資料庫目錄更換路徑了。

J. MySQL(DML數據操作語言,添加/刪除/修改資料庫數據)

插入數據

insert into 表名(欄位) values(『數據』);

insert into 表名1(name,age) select name,age from 表2; #表2 數據信息復制到表1

修改數據

update 表名 set '欄位'='數據';    #修改數據

delect from 表名 where 欄位=值;   #刪除數據

truncate table 表名;           #清空所有數據 且無法恢復

DQL (數據查詢語言,用來查詢數據)

select 要查詢欄位 from 表名 [where 滿足條件];

[group by 分組依據]

[order by 排序依據]

[limit 限定輸出結果]

select * from 表名;         #查詢 表 所有數據

select 欄位 欄位 from 表名;      #查詢指定欄位數據

select st.name,st.age,th.name,th.age from st,th;            #查詢一個或多個  表中的數據

SELECT 欄位名 FROM 表名 WHERE 條件1 OR 條件2 [...OR 條件n];

例:SELECT * FROM students WHERE age<20 OR ecation!='大專' #查詢年齡小於20或 者學歷不等於大專的學生信息

SELECT 欄位名 FROM 表名 WHERE 條件1 AND 條件2 [...AND 條件n];

例:SELECT * FROM students WHERE age>22 AND ecation='大專' # 查詢年齡大於22 且學歷為大專的學生信息

select 欄位 from 表名 where age in (12,17,23);              #數據在指定 數據 裡面

select 欄位 from 表名 where age between 23 and 28;       #數據在23-28 之間

select * from 表名 order by 欄位名;                      #排序,升序

select 欄位 from 表名 order by desc;                        #   欄位降序

select 欄位1,欄位2…… from 表名 group by  分組依據欄位;          #每個欄位只顯示一條

例:SELECT id,sname,age,phone,place,GROUP_CONCAT(age,place) FROM students GROUP BY age,place; #查詢學生信息,根據age,place分組並顯示每一組的記 錄

select  distinct  欄位 from  表名;                          #去除結果重復行

例:SELECT DISTINCT age FROM students; # 查詢學生的年齡段情況

selcet 欄位1,欄位2,group_concat(分組依賴欄位名) from 表名 group by 分組依賴欄位名;    #查詢每個組中記錄數量,顯示出來(使用關鍵字GROUP BY與GROUP_CONCAT()函數一起使用,可以將每個組中的記錄數量都顯 示出來)

例:selcet id,sname,age,phone,GROUP_CONCAT(age) FROM students GROUP BY age; # 查詢學生id,姓名,年齡,電話,根據age分組並顯示每一組的記錄

SELECT 欄位名 FROM 表名 [其他條件] LIMIT int,int; 參數1是開始讀取的第一條記錄的 編號,參數2是要查詢記錄的個數

例:SELECT * FROM students ORDER BY age LIMIT 0,5; # 查詢學生信息,根據age 排序從第0位開始顯示,只顯示5條

select 欄位名 from 表名where欄位名 regexp '匹配方式'

(^匹配以特定字元或 字元串開頭的記錄,

$匹配以特定字元或 字元串結尾的記錄

[^字元集 合]匹配除「字元集合」以 外的任意一個字元

S1|S2|S3匹配S1 S2 S3中 的任意一個字元串

字元串{N }匹配字元串出現N次

字元串 {M,N}匹配字元串出現至 少M次,最多N次)

聚合函數查詢

select count(欄位名) from 表名;           #對於除"*"以外的任何參數,返回所選擇集合中非NULL值的行的數目;對於參數「*」,返回選擇集 合中所有行的數據,包含NULL值的行

例:SELECT COUNT(*) FROM students;

select sum(欄位名) from 表名;          #表中某個欄位取值的總和

select avg(欄位名) from 表名;       #表中某個欄位取值的平均值

select max(欄位名) from 表名;        #表中某個欄位取值的最大值

select min(欄位名) from 表名;         #表中某個欄位取值的最小值

連接查詢

a.內連接:列出數據表中與連接條件相匹配的數據行,組合成新記錄【只有滿足條件的記錄才出現在查詢結 果】 內連接的最常見的例子是相等連接,也就是連接後的表中的某個欄位與每個表中的都相同

select 欄位名1,欄位名2  from 表名1 inner join 表名2 where 連接條件;

例:select s.name,d.dname from staff s inner join department d WHERE s.dpid = d.id; # 連接員工表的dpid欄位和部門表的id欄位,並查詢員工姓名和部門名稱

b.外連接:與內連接不同,外連接是指使用OUTER JOIN關鍵字將兩個表連接起來。外連接生成的結果集不僅 包含符合連接條件的行數據 ,而且還包含左表(左外連接時的表) 右表(右外連接時的表)或 兩邊連接表(全外連接時的表)中所有的數據行。

select 欄位名稱 from 表名1 LEFT|RIGHT join 表名2 on 表名1.欄位名1 = 表名2.欄位名2;

例:select s.name,d.dname FROM staff s LEFT JOIN department d ON s.dpid = d.id; #連接員工表的dpid欄位和部門表的id欄位,並查詢員工姓名和部門名稱,如果右表中沒有對應的 連接數據,會自動添加NULL值

例:SELECT s.name,d.dname FROM staff s RIGHT JOIN department d ON s.dpid = d.id; # 連接員工表的dpid欄位和部門表的id欄位,並查詢員工姓名和部門名稱,如果左表中沒有對應 的連接數據,會自動添加NULL值

例:SELECT 欄位名1,欄位名2 FROM 表名1,表名2 WHERE 連接條件 AND 限制條件; 例:SELECT s.name,d.dname FROM staff s,department d WHERE s.dpid = d.id AND s.dpid>1; # 查詢員工姓名和部門名稱,條件是員工表的dpid欄位與部門表中的id欄位相等,並且dpid大於1

合並查詢結果

select 欄位名 from  表名 UNION select 欄位名  from 表名;   #關鍵字UNION是將所 有的查詢結果合並到一起,並且去除相同記錄

例:SELECT dpid FROM staff UNION SELECT id FROM department; # 查詢員工表dpid與部門表id,如果有重復數據,只顯示一次

select 欄位名 drom 表名 UNION ALL select 欄位名from表名;   #關鍵字UNION ALL 則只是簡單地將結果合並到一 起

例:SELECT dpid FROM staff UNION ALL SELECT id FROM department; # 查詢員工表dpid與部門表id,全部顯示