MySQL經常使用命令

爲方便查詢,特整理MySQL經常使用命令,以下。全部命令都親手檢驗過,請放心使用:)css

約定:$後爲Shell環境命令,>後爲MySQL命令。python

1 經常使用命令

第一步,鏈接數據庫。mysql

$ mysql -u root -p                           # 進入MySQL bin目錄後執行,回車後輸入密碼鏈接。
                                             # 經常使用參數:-h 服務器地址,-u 用戶名,-p 密碼,-P 端口

而後是一些經常使用的命令。
數據庫操做:sql

複製代碼
1 > create database dbname;                    # 建立數據庫,數據庫名爲dbname
2 > CREATE DATABASE `todo` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;  # 建立todo數據庫,並指定字符集
3 > show databases;                            # 顯示全部數據庫
4 > alter database character set utf8;         # 修改數據庫字符集
5 > use dbname;                                # 選擇數據庫
6 > status;                                    # 查看當前選擇(use)的數據庫
7 > drop database dbname;                      # 刪除數據庫
複製代碼

數據表操做:數據庫

複製代碼
1 > show tables;                               # 顯示全部表
2 > describe tablename;                        # 表結構詳細描述
3 > desc tablename;                            # 同 describe 命令同樣
4 > create table newtable like oldtable;       # 複製表結構
5 > insert into newtable select * from oldtable;  #複製表數據
6 > rename table tablelname to new_tablelname  # 重命名錶,同時命名多個表用逗號「,」分割
7 > drop table tablename;                      # 刪除表
複製代碼

界面操做:服務器

> select version(),current_date;             # 顯示當前mysql版本和當前日期
> exit     

2 建立數據表

create table命令用來建立數據表,格式:網絡

create table <表名> (<字段名1> <類型1> [,..<字段名n> <類型n>]);

數據的類型以後還能夠包含:數據寬度 + 是否爲空 + 是否主鍵 + 自動增長 + 默認值,它們書寫時不限順序。可是字段名和字段類型必須是第一和第二位。例如,創建一個名爲user的表:dom

mysql> create table user(
    -> id int(4) not null primary key auto_increment,
    -> name char(20) not null,
    -> sex int(4) not null default '0',
    -> degree double(16,2)
    -> );

3 修改root的密碼

複製代碼
$ mysqladmin -u root password                     # 原始密碼爲空的狀況
New password: <輸入新的密碼>
Confirm new password: <再次輸入新密碼>

$ mysqladmin -u root -p password                  # 原始密碼不爲空的狀況
Enter password: <輸入舊的密碼>
New password: <輸入新的密碼>
Confirm new password: <再次輸入新密碼>

$ mysqladmin -uroot -p123456 password             # 原始密碼不爲空的狀況,效果和第二種方法同樣,只是顯式的輸入了原始密碼
New password: <輸入新的密碼>
Confirm new password: <再次輸入新密碼>
複製代碼

4 備份和恢復

複製代碼
$ mysqldump -u root -p dbname > dbname.sql                        # 備份整個數據庫(包含表結構和數據)
$ mysqldump -u root -p -d dbname > dbname.sql                     # 備份數據庫表結構,不包含數據,
$ mysqldump -u root -p dbname tablename > tablename.sql           # 備份數據庫中的某張數據表(包含表結構和數據)
$ mysqldump -u root -p dbname tablename1 tablename2 > tables.sql  # 備份數據庫中2張數據表
$ mysqldump -u root -p -d dbname tablename > tablename.sql        # 備份數據庫中的某張數據表的表結構(不含數據)

$ mysqladmin -u root -p create dbname       # 恢復數據庫步驟1:建立數據庫
$ mysql -u root -p dbname < dbname.sql      # 恢復數據庫步驟2:恢復數據
複製代碼

若是是網絡上的服務器,能夠在mysqldump以後用-h指定服務器地址,例如:spa

$ mysqldump -h sql.domain.com -u root -p dbname > dbname.sql

導出查詢結果到本地計算機:命令行

mysql -h127.0.0.1 -P3306 -uroot -proot -Ae "use test;select * from user where status=4 order by id desc;" > "C:\Users\Gary\user.txt"

5 用戶和權限管理

MySQL 默認有個root用戶,可是這個用戶權限太大,通常只在管理數據庫時候才用。若是在項目中要鏈接 MySQL 數據庫,則建議新建一個權限較小的用戶來鏈接。在 MySQL 命令行模式下輸入以下命令能夠爲 MySQL 建立一個新用戶:

> CREATE USER username IDENTIFIED BY '123456';        # 其中,username是用戶名,123456是用戶密碼

新用戶建立完成,可是此刻若是以此用戶登錄的話,會報錯,由於咱們尚未爲這個用戶分配相應權限,分配權限的命令是grant,格式爲:

GRANT <權限> ON <數據庫>.<表名> TO <用戶名>@<登陸主機> IDENTIFIED BY "<密碼>"

其中,權限能夠是:allselectinsertdeleteupdatedrop等值。

因而,用下面的命令就能夠執行特定的功能:

> GRANT ALL ON *.* TO 'username'@'localhost' IDENTIFIED BY '123456';                  # 給用戶 username 分配全部數據庫的全部權限
> REVOKE ALL ON *.* FROM 'username'@'localhost';                                      # 若是以爲上面的權限太大,用 REVOKE 刪除原來權限
> GRANT ALL ON dbname.* TO 'username'@'localhost' IDENTIFIED BY '123456';             # 從新授予僅在dbname數據庫上的權限
> GRANT SELECT, UPDATE ON dbname.* TO 'username'@'localhost' IDENTIFIED BY '123456';  # 僅授予select、update權限,沒法執行insert、delete等命令
> FLUSH PRIVILEGES;                                                                   # 每當調整權限後,一般須要用這個命令刷新權限
> DROP USER username@localhost;                                                       # 刪除用戶

仔細觀察上面幾個命令,能夠發現無論是受權,仍是刪除受權,都要指定響應的host(即@符號後面的登陸主機,主機也能夠用%通配符表示全部主機,或者192.168.1.% 表示特定主機段)。由於以上及格命令實際上都是在操做 mysql 數據庫中的user表,能夠用以下命令查看相應用戶及對應的host:

SELECT user, host FROM user;
相關文章
相關標籤/搜索