首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 命令詳細版:從連接認證到備份還原的全維度操作手冊

     編輯:MySQL 資料庫相關知識

一、連接 MySQL

# 本地
mysql -u root -p

# 遠程
mysql -h 110.110.110.110 -u root -p123

# 退出
exit

二、密碼管理

# 首次設置
mysqladmin -u root password 'ab12'

# 修改密碼
mysqladmin -u root -p'ab12' password 'djg345'

三、用戶授權體系

-- 通配符主機(高風險)
GRANT SELECT,INSERT,UPDATE,DELETE ON *.* TO 'test1'@'%' IDENTIFIED BY 'abc';

-- 本地限制(推薦)
GRANT SELECT,INSERT,UPDATE,DELETE ON mydb.* TO 'test2'@'localhost' IDENTIFIED BY 'abc';

-- 無密碼(極不推薦)
GRANT SELECT,INSERT,UPDATE,DELETE ON mydb.* TO 'test2'@'localhost' IDENTIFIED BY '';

四、數據庫高級操作

1. 創建與授權一體化

CREATE DATABASE xhkdb;
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON xhkdb.* TO 'xhkdb'@'localhost' IDENTIFIED BY 'pass';
SET PASSWORD FOR 'xhkdb'@'localhost' = PASSWORD('pass');

2. 字符集亂碼解決方案

# 1. 修改 my.cnf
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

# 2. 連接串指定
# Java: jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=utf8
# PHP: header("Content-Type: text/html; charset=utf8");
# C: mysql_set_character_set(mysql, "utf8");

3. 安全刪除庫

DROP DATABASE IF EXISTS db_name;  -- 不報錯,產生警告

4. 庫切換與跨庫查詢

USE db1;
SELECT COUNT(*) FROM mytable;

USE db2;
SELECT COUNT(*) FROM mytable;

-- 跨庫 JOIN
USE db1;
SELECT a.author_name, e.editor_name
FROM author a, db2.editor e
WHERE a.editor_id = e.editor_id;

5. SELECT 多功能用法

SELECT VERSION();           -- 版本
SELECT NOW();               -- 當前時間
SELECT DAYOFMONTH(CURRENT_DATE);  -- 日
SELECT MONTH(CURRENT_DATE);       -- 月
SELECT YEAR(CURRENT_DATE);        -- 年
SELECT 'welcome to my blog';      -- 字符串
SELECT ((4*4)/10)+25;             -- 計算器
SELECT CONCAT(f_name,' ',l_name) AS Name FROM employee_data WHERE title='Marketing Executive';

五、表操作全集

1. 建表範例

CREATE TABLE MyClass (
    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)
);

2. 結構查看與 Key 含義

DESC MyClass;
SHOW COLUMNS FROM MyClass;

Key 值:空(無索引) < PRI(主鍵) < UNI(唯一) < MUL(非唯一/復合)

3. 刪表細節

  • DROP TABLE IF EXISTS t; 防報錯
  • 分區表:連帶刪除分區定義 .par 文件
  • RESTRICT/CASCADE 當前版本保留兼容不生效

4. 數據操作

INSERT INTO MyClass VALUES (1,'Tom',96.45),(2,'Joan',82.99);
SELECT * FROM MyClass;
SELECT * FROM MyClass ORDER BY id LIMIT 0,2;
DELETE FROM MyClass WHERE id=1;
UPDATE MyClass SET name='Mary' WHERE id=1;

5. 結構變更進階

ALTER TABLE MyClass ADD passtest INT(4) DEFAULT '0';
ALTER TABLE employee ADD INDEX emp_name (name);
ALTER TABLE employee ADD PRIMARY KEY (id);
ALTER TABLE employee ADD UNIQUE emp_name2 (cardnumber);
ALTER TABLE employee DROP INDEX emp_name;

ALTER TABLE t1 CHANGE a b INTEGER;
ALTER TABLE t1 CHANGE b b BIGINT NOT NULL;
ALTER TABLE t1 MODIFY b BIGINT NOT NULL;
ALTER TABLE t1 DROP COLUMN b;

RENAME TABLE MyClass TO YouClass;

六、備份還原實戰

1. mysqldump 全模式

# 全庫
mysqldump -u root -p123456 db > out.sql

# 單表
mysqldump -u root -p db tbl > out.sql

# 僅結構(含 DROP TABLE)
mysqldump -u root -p -d --add-drop-table db > struct.sql

# 指定字符集
mysqldump -u root -p --default-character-set=latin1 --set-charset=gbk --skip-opt db > out.sql

2. 實戰備份

cd /home/data/mysql
mysqldump -u root -p --opt aaa > back_aaa

七、完整建庫腳本範例

DROP DATABASE IF EXISTS school;
CREATE DATABASE school;
USE school;

CREATE TABLE teacher (
    id INT(3) AUTO_INCREMENT NOT NULL PRIMARY KEY,
    name CHAR(10) NOT NULL,
    address VARCHAR(50) DEFAULT '深圳',
    year DATE
);

INSERT INTO teacher VALUES (NULL,'allen','大連一中','1976-10-10');
INSERT INTO teacher VALUES (NULL,'jack','大連二中','1975-12-23');

執行方式

mysql -u root -p < c:\school.sql
# 或
mysql> SOURCE c:\school.sql;

本手冊整合了 MySQL 從安裝配置到生產運維的核心命令集。重點掌握:**字符集三處一致(庫/表/連接)、權限模型 User@Host、mysqldump 熱備份參數、ALTER TABLE 線上限制**。實戰中根據 5.6/5.7/8.0 版本差異微調語法。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved