「MySQL」:修訂間差異

出自Gea-Suan Lin's Wiki
跳至導覽 跳至搜尋
Gslin留言 | 貢獻
Gslin留言 | 貢獻
 
(未顯示同一使用者於中間所作的 9 次修訂)
第11行: 第11行:
=== 帳號 ===
=== 帳號 ===


開帳號以及開權限:
開帳號以及開權限
 
由於我們現在會設定<code>skip-name-resolve</code>(減少連線所需要的時間),這邊要注意本地端的權限設定部分有<code>localhost</code>與<code>127.0.0.1</code>的差異(前者只剩下UNIX socket會對應到,而<code>127.0.0.1</code>則是對TCP socket的設定)


<syntaxhighlight lang="sql">
<syntaxhighlight lang="sql">
CREATE USER `trac`@`localhost` IDENTIFIED BY 'password_here';
CREATE USER `trac`@`localhost` IDENTIFIED BY 'password_here';
CREATE USER `trac`@`127.0.0.1` IDENTIFIED BY 'password_here';
CREATE USER `trac`@`%` IDENTIFIED BY 'password_here';
CREATE USER `trac`@`%` IDENTIFIED BY 'password_here';
GRANT ALL ON trac.* TO `trac`@`localhost`;
GRANT ALL ON trac.* TO `trac`@`127.0.0.1`;
GRANT ALL ON trac.* TO `trac`@`127.0.0.1`;
GRANT ALL ON trac.* TO `trac`@`%`;
GRANT ALL ON trac.* TO `trac`@`%`;
第23行: 第27行:


<syntaxhighlight lang="sql">
<syntaxhighlight lang="sql">
GRANT SELECT ON trac.* TO `trac`@`127.0.0.1`;
GRANT SELECT ON trac.* TO `trac`@`localhost`;
GRANT SELECT ON trac.* TO `trac`@`%`;
GRANT SELECT ON trac.* TO `trac`@`%`;
</syntaxhighlight>
</syntaxhighlight>
第30行: 第34行:


<syntaxhighlight lang="sql">
<syntaxhighlight lang="sql">
DROP USER 'trac'@'127.0.0.1';
DROP USER 'trac'@'localhost';
DROP USER 'trac'@'%';
</syntaxhighlight>
</syntaxhighlight>


只移除權限(單一資料庫或是全部):
只移除權限(單一資料庫或是全部),另外注意這邊的<code>ALL, GRANT OPTION</code>不是分開的兩個權限


<syntaxhighlight lang="sql">
<syntaxhighlight lang="sql">
REVOKE ALL, GRANT OPTION ON trac.* FROM 'trac'@'127.0.0.1';
REVOKE ALL, GRANT OPTION ON trac.* FROM 'trac'@'localhost';
REVOKE ALL, GRANT OPTION FROM 'trac'@'127.0.0.1';
REVOKE ALL, GRANT OPTION FROM 'trac'@'localhost';
</syntaxhighlight>
</syntaxhighlight>



於 2025年5月11日 (日) 07:41 的最新修訂

MySQL是一套資料庫軟體。

常用指令

除了可以用官方內建的mysql操作外,也可以用mycli操作:

sudo apt install -y mycli; sudo apt clean

帳號

開帳號以及開權限。

由於我們現在會設定skip-name-resolve(減少連線所需要的時間),這邊要注意本地端的權限設定部分有localhost127.0.0.1的差異(前者只剩下UNIX socket會對應到,而127.0.0.1則是對TCP socket的設定):

CREATE USER `trac`@`localhost` IDENTIFIED BY 'password_here';
CREATE USER `trac`@`127.0.0.1` IDENTIFIED BY 'password_here';
CREATE USER `trac`@`%` IDENTIFIED BY 'password_here';
GRANT ALL ON trac.* TO `trac`@`localhost`;
GRANT ALL ON trac.* TO `trac`@`127.0.0.1`;
GRANT ALL ON trac.* TO `trac`@`%`;

如果是只開讀取的權限:

GRANT SELECT ON trac.* TO `trac`@`localhost`;
GRANT SELECT ON trac.* TO `trac`@`%`;

刪除(同時也會移除權限):

DROP USER 'trac'@'localhost';
DROP USER 'trac'@'%';

只移除權限(單一資料庫或是全部),另外注意這邊的ALL, GRANT OPTION不是分開的兩個權限:

REVOKE ALL, GRANT OPTION ON trac.* FROM 'trac'@'localhost';
REVOKE ALL, GRANT OPTION FROM 'trac'@'localhost';

改密碼:

SET PASSWORD = 'newPassword';

資料

開新的資料庫,這邊刻意使用utf8mb4

CREATE DATABASE test CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

測試集

MySQL官方有提供一些測試資料:

  • Sakila,2006年釋出的範例,使用了許多不同的設計(包括view、trigger,以及foreign key與constraint),裡面的資料是模擬一個DVD的租賃系統。

相關連結

外部連結