MySQL必知必會—安裝應用篇

MySQL必知必會—概念篇mysql


MySQL 安裝

推薦幾個 MySQL 安裝和鏈接的經驗文章git

MySQL 應用

mysql 命令行

  • 命令輸入在 mysql> 以後;
  • 命令用 ; 或 g 結束,換句話說,僅按 Enter 不執行命令;
  • 輸入 help 或 h 得到幫助,也能夠輸入更多的文本得到特定命令的幫助(如,輸入 help select 得到試用 SELECT 語句的幫助);
  • 輸入 quit 或 exit 退出命令行。

鏈接數據庫

鏈接數據庫須要如下信息:github

  • 主機名(計算機名)——若是鏈接到本地 MySQL 服務器,爲 localhost ;
  • 端口(若是使用默認端口 3306 以外的端口);
  • 一個合法的用戶名;
  • 用戶口令(若是須要)

例以下面的指令:sql

mysql -u root -h localhost -P 3306 -p

數據庫的登陸和成員管理

訪問控制

MySQL 服務器的安全基礎是:用戶應該對他們須要的數據具備適當的訪問權,既不能多也不能少。數據庫

須要給用戶提供他們所需的訪問權,且僅提供他們所需的訪問權。這就是所謂的訪問控制。訪問控制的目的不單單是防止用戶的惡意企圖,訪問控制也有助於避免很常見的無心識錯誤的結果,如錯打 MySQL 語句,在不合適的數據庫中操做或其餘一些用戶錯誤。segmentfault

管理用戶

查詢已有用戶

MySQL 用戶帳號和信息存儲在名爲 mysql 的 MySQL數據庫中。通常只有在須要得到全部用戶帳號列表時纔會直接訪問。安全

# 輸入
USE mysql;
SELECT user FROM user;

# 輸出
+------------------+
| user             |
+------------------+
| test             |
| root             |
+------------------+
建立用戶帳號
一、使用 CREATE USER 語句(推薦)
# 輸入
CREATE USER chenfangxu IDENTIFIED BY '123456';
SELECT user FROM user;

#輸出
+------------------+
| user             |
+------------------+
| chenfangxu       |
| test             |
| root             |
+------------------+
二、GRANT 語句也能夠建立用戶帳號。(MySQL 8.0以上的新版本已經將建立帳戶和賦予權限分開了,因此不能再用這種方法建立用戶了)
# mysql8.0如下
GRANT SELECT ON *.* TO chenfangxu@'%' IDENTIFIED BY '123456';
三、使用 INSERT 直接插入行到 user 表來增長用戶(不建議)
設置訪問權限

在建立用戶帳號後,必須接着分配訪問權限。新建立的用戶帳號沒有訪問權限。他們能登陸 MySQL ,但不能看到數據,不能執行任何數據庫操做。服務器


查看賦予用戶帳號的權限 SHOW GRANTS FOR
# 輸入
SHOW GRANTS FOR chenfangxu;

# 輸出
+----------------------------------------+
| Grants for chenfangxu@%                |
+----------------------------------------+
| GRANT USAGE ON *.* TO `chenfangxu`@`%` |
+----------------------------------------+

權限 USAGE ON *.* ,USAGE表示根本沒有權限,這句話就是說在任意數據庫和任意表上對任何東西沒有權限。ui

chenfangxu@% 由於用戶定義爲 user@host, MySQL的權限用用戶名和主機名結合定義,若是不指定主機名,則使用默認的主機名%(即授予用戶訪問權限而無論主機名)。命令行


添加(更新)用戶權限 GRANT privileges ON databasename.tablename TO 'username'@'host';
# 輸入
GRANT SELECT ON performance_schema.* TO chenfangxu@'%';
SHOW GRANTS FOR chenfangxu;

# 輸出
+------------------------------------------------------------+
| Grants for chenfangxu@%                                    |
+------------------------------------------------------------+
| GRANT USAGE ON *.* TO `chenfangxu`@`%`                     |
| GRANT SELECT ON `performance_schema`.* TO `chenfangxu`@`%` |
+------------------------------------------------------------+


撤銷用戶的權限 REVOKE privileges ON databasename.tablename FROM 'username'@'host';
# 輸入
REVOKE SELECT ON performance_schema.* FROM chenfangxu@'%';
SHOW GRANTS FOR chenfangxu;

#輸出
+----------------------------------------+
| Grants for chenfangxu@%                |
+----------------------------------------+
| GRANT USAGE ON *.* TO `chenfangxu`@`%` |
+----------------------------------------+


重命名

重命名: RENAME USER 'username' TO 'newusername';
# 輸入
RENAME USER test TO test1;
SELECT user FROM user;

# 輸出
+------------------+
| user             |
+------------------+
| test1            |
| root             |
+------------------+


更改用戶密碼(mysql 8.0.11後)

更改用戶密碼: SET PASSWORD FOR 'username'@'host' = 'newpassword';
SET PASSWORD FOR chenfangxu@'%' = '654321';

# 更改root密碼
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpasswd';


刪除用戶

刪除用戶: DROP USER 'username'@'host';
# 輸入
DROP USER chenfangxu@'%';
SELECT user FROM user;

#輸出
+------------------+
| user             |
+------------------+
| test             |
| root             |
+------------------+

MySQL 5 之前, DROP USER 只能用來刪除用戶帳號,不能刪除相關的權限。所以,若是使用舊版的 MySQL 須要先用 REVOKE 刪除與帳號相關的權限,而後再用 DROP USER 刪除帳號。

操做數據庫

# 建立數據庫,如建立 learnsql 數據庫
CREATE DATABASE learnsql;

# 選擇數據庫,如選擇 learnsql 數據庫
USE learnsql;

# 顯示數據庫列表
SHOW DATABASES;

# 顯示數據庫內的表的列表
SHOW TABLES;

# 顯示錶中每一列的詳細信息
SHOW COLUMNS FROM customers;

DESCRIBE 語句

MySQL 中 DESCRIBE 能夠做爲 SHOW COLUMNS FROM 的快捷方式。

# 如下兩種命令結果相同
SHOW COLUMNS FROM customers;
DESCRIBE customers;

一個持續更新的github筆記,連接地址:Front-End-Basics,能夠watch,也能夠star。

此篇文章的地址:MySql必知必會

相關文章
相關標籤/搜索