1. 程式人生 > >Linux學習之路--Mariadb(3)基本使用操作【20】---20180123

Linux學習之路--Mariadb(3)基本使用操作【20】---20180123

result run page 提高 進行 組成 varchar alias pan


一、MariaDB程序


1、MariaDB的程序組成

  • Client

    mysql:CLI交互式客戶端程序

    mysqldump,mysqladmin...

  • Server

    mysqld_safe

    mysqld

    mysqld_multi:多實例

  • 服務器監聽的兩種socket地址:
    ip socket: 監聽在tcp的3306端口,支持遠程通信
    unix sock: 監聽在sock文件上(/tmp/mysql.sock, /var/lib/mysql/mysql.sock),僅支持本機通信
    server: localhost, 127.0.0.1 自動使用unix sock

  • 命令行交互式客戶端程序mysql選項:

    --print-defaults 默認選項
    --verbose 顯示祥細信息
    -uUSERNAME: 用戶名;默認為root
    -hHOST: 服務器主機; 默認為localhost
    -pPASSWORD:用戶的密碼;建議使用-p,默認為空密碼

  • mysql用戶賬號由兩部分組成:
    'USERNAME'@'HOST'
    HOST用於限制此用戶可通過哪些遠程主機連接mysql服務
    支持使用通配符:
    % 匹配任意長度的任意字符
    172.16.0.0/255.255.0.0 或 172.16.%.%
    _ 匹配任意單個字符


2、簡單執行命令

  • 運行mysql命令:默認空密碼登錄
    mysql>use mysql
    mysql>select user();查看當前用戶
    mysql>SELECT User,Host,Password FROM user;

  • 安全初始化
    /usr/local/mysql/bin/mysql_secure_installatoin

  • 登錄系統:mysql –uroot –p

  • 客戶端命令:本地執行
    mysql> help
    每個命令都完整形式和簡寫格式
    mysql> status 或 \s

  • 服務端命令:通過mysql協議發往服務器執行並取回結果
    每個命令都必須命令結束符號;默認為分號

    SELECT VERSION();


3、關系型數據庫的常見組件

  • 數據庫:databases

  • 表:table

    列:column

    行:row

  • 索引:index

  • 視圖:view

  • 用戶:user

  • 權限:privilege

  • 存儲過程:procedure,無返回值

  • 存儲函數:function,有返回值

  • 觸發器:trigger

  • 事件調度器:event scheduler,任務計劃


二、SQL語言的興起與語法標準


  • 20世紀70年代,IBM開發出SQL,用於DB2

  • 1981年,IBM推出SQL/DS數據庫

  • 業內標準微軟和Sybase的T-SQL,Oracle的PL/SQL

  • SQL作為關系型數據庫所使用的標準語言,最初是基於IBM的實現在1986年被批準的。1987年,“國際標準化組織(ISO)”把ANSI(美國國家標準化組織) SQL作為國際標準。這個標準在1992年進行了修訂(SQL-92),1999年再次修訂(SQL-99),目前最新的是SQL-2003

  • Keyword組成clause

  • 多條clause組成語句

  • SELECT * SELECT子句

  • FROM products FROM子句

  • WHERE price>400 WHERE子句

  • 這是一組語句,由三個子句構成,SELECT,FROM和WHERE都是關鍵字


1、SQL語句分類

  • DDL: Data Defination Language
    CREATE, DROP, ALTER

  • DML: Data Manipulation Language
    INSERT, DELETE, UPDATE

  • DCL:Data Control Language
    GRANT, REVOKE

  • DQL:Data Query Language
    SELECT


2、SQL語言規範

  • 在數據庫系統中,SQL語句不區分大小寫(建議用大寫)

  • 但字符串常量區分大小寫

  • SQL語句可單行或多行書寫,以“;”結尾

  • 關鍵詞不能跨多行或簡寫

  • 用空格和縮進來提高語句的可讀性

  • 子句通常位於獨立行,便於編輯,提高可讀性

  • 註釋:
    SQL標準:
    /*註釋內容*/ 多行註釋
    -- 註釋內容 單行註釋,註意有空格

  • MySQL註釋:
    #


3、數據庫對象的命名規則

  • 必須以字母開頭

  • 可包括數字和三個特殊字符(# _ $)

  • 不要使用MySQL的保留字

  • 同一database(Schema)下的對象不能同名


4、數據庫操作

  • 創建數據庫:
    CREATE DATABASE|SCHEMA [IF NOT EXISTS] 'DB_NAME';
    CHARACTER SET 'character set name'
    COLLATE 'collate name'

  • 刪除數據庫
    DROP DATABASE|SCHEMA [IF EXISTS] 'DB_NAME';

  • 查看支持所有字符集

    SHOW CHARACTER SET;

  • 查看支持所有排序規則

    SHOW COLLATION;

  • 獲取命令使用幫助:
    mysql> HELP KEYWORD;

  • 查看數據庫列表:
    mysql> SHOW DATABASES;


5、創建表

  • CREATE TABLE [IF NOT EXISTS] ‘tbl_name’ (col1 type1 修飾符, col2 type2 修飾符, ...)

  • 字段信息
    col type1
    PRIMARY KEY(col1,...)
    INDEX(col1, ...)
    UNIQUE KEY(col1, ...)

  • 表選項:
    ENGINE [=] engine_name
    SHOW ENGINES;查看支持的engine類型
    ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}

  • 獲取幫助:mysql> HELP CREATE TABLE;


6、表操作

  • 查看所有的引擎

    SHOW ENGINES;

  • 查看表

    SHOW TABLES [FROM db_name];

  • 查看表結構

    DESC [db_name.]tb_name;

  • 刪除表

    DROP TABLE [IF EXISTS] tb_name;

  • 查看表創建命令

    SHOW CREATE TABLE tbl_name;

  • 查看表狀態

    SHOW TABLE STATUS LIKE 'tbl_name'\G

三、數據類型


  • 數據類型:
    數據長什麽樣?
    數據需要多少空間來存放?

  • 系統內置數據類型和用戶定義數據類型

  • MySql支持多種列類型:
    數值類型
    日期/時間類型
    字符串(字符)類型

  • 選擇正確的數據類型對於獲得高性能至關重要,三大原則:
    更小的通常更好,盡量使用可正確存儲數據的最小數據類型
    簡單就好,簡單數據類型的操作通常需要更少的CPU周期
    盡量避免NULL,包含為NULL的列,對MySQL更難優化


1、整型

  • tinyint(m) 1個字節 範圍(-128~127)

  • smallint(m) 2個字節 範圍(-32768~32767)

  • mediumint(m) 3個字節 範圍(-8388608~8388607)

  • int(m) 4個字節 範圍(-2147483648~2147483647)

  • bigint(m) 8個字節 範圍(+-9.22*10的18次方)

  • 取值範圍如果加了unsigned,則最大值翻倍,如tinyint unsigned的取值範圍為(0~255)

  • int(m)裏的m是表示SELECT查詢結果集中的顯示寬度,並不影響實際的取值範圍

  • MySQL可以為整型類型指定寬度,例如Int(11),對絕大多數應用這是沒有意義的:它不會限制值的合法範圍,

    只是規定了MySQL的一些交互工具(例如MySQL命令行客戶端)用來顯示字符的個數。對於存儲和計算來說,Int(1)和Int(20)是相同的


2、浮點型(float和double),近似值

  • float(m,d) 單精度浮點型 8位精度(4字節) m總個數,d小數位

  • double(m,d) 雙精度浮點型 16位精度(8字節) m總個數,d小數位

  • 設一個字段定義為float(6,3),如果插入一個數123.45678,實際數據庫裏存的是123.457,但總個數還以實際為準,即6位


3、定點數

  • 在數據庫中存放的是精確值,存為十進制

  • decimal(m,d) 參數m<65 是總個數,d<30且 d<m 是小數位

  • MySQL5.0和更高版本將數字打包保存到一個二進制字符串中(每4個字節存9個數字)。例如,decimal(18,9)小數點兩邊將各存儲9個數字,

    一共使用9個字節:小數點前的數字用4個字節,小數點後的數字用4個字節,小數點本身占1個字節

  • 浮點類型在存儲同樣範圍的值時,通常比decimal使用更少的空間。float使用4個字節存儲。double占用8個字節

  • 因為需要額外的空間和計算開銷,所以應該盡量只在對小數進行精確計算時才使用decimal——例如存儲財務數據。

    但在數據量比較大的時候,可以考慮使用bigint代替decimal


4、字符串(char,varchar,_text)

  • char(n) 固定長度,最多255個字符

  • varchar(n)可變長度,最多65535個字符

  • tinytext 可變長度,最多255個字符

  • text 可變長度,最多65535個字符

  • mediumtext 可變長度,最多2的24次方-1個字符

  • longtext 可變長度,最多2的32次方-1個字符

  • BINARY(M) 固定長度,可存二進制或字符,允許長度為0-M字節,

  • VARBINARY(M) 可變長度,可存二進制或字符,允許長度為0-M字節

  • 內建類型:ENUM枚舉, SET集合


5、char和varchar:

  • char(n) 若存入字符數小於n,則以空格補於其後,查詢之時再將空格去掉。所以char類型存儲的字符串末尾不能有空格,varchar不限於此。

  • char(n) 固定長度,char(4)不管是存入幾個字符,都將占用4個字節,varchar是存入的實際字符數+1個字節(n< n>255),所以varchar(4),存入3個字符將占用4個字節。

  • char類型的字符串檢索速度要比varchar類型的快


6、varchar和text:

  • varchar可指定n,text不能指定,內部存儲varchar是存入的實際字符數+1個字節(n< n>255),text是實際字符數+2個字節。

  • text類型不能有默認值

  • varchar可直接創建索引,text創建索引要指定前多少個字符。varchar查詢速度快於text


7、二進制數據:BLOB

  • BLOB和text存儲方式不同,TEXT以文本方式存儲,英文存儲區分大小寫,而Blob是以二進制方式存儲,不分大小寫

  • BLOB存儲的數據只能整體讀出

  • TEXT可以指定字符集,BLOB不用指定字符集


8、日期時間類型

  • date 日期 '2008-12-2'

  • time 時間 '12:25:36'

  • datetime 日期時間 '2008-12-2 22:06:44'

  • timestamp 自動存儲記錄修改時間

  • YEAR(2), YEAR(4):年份

  • timestamp字段裏的時間數據會隨其他字段修改的時候自動刷新,這個數據類型的字段可以存放這條記錄最後被修改的時間


9、修飾符

  • 所有類型:
    ?NULL 數據列可包含NULL值
    ?NOT NULL 數據列不允許包含NULL值
    ?DEFAULT 默認值
    ?PRIMARY KEY 主鍵
    ?UNIQUE KEY 唯一鍵
    ?CHARACTER SET name 指定一個字符集

  • 數值型
    ?AUTO_INCREMENT 自動遞增,適用於整數類型
    ?UNSIGNED 無符號

#示例
CREATE TABLE students (id int UNSIGNED NOT NULL PRIMARY KEY,name VARCHAR(20)NOT NULL,age tinyint UNSIGNED);

DESC students;

CREATE TABLE students2 (id int UNSIGNED NOT NULL ,name VARCHAR(20) NOT NULL,age tinyint UNSIGNED,PRIMARY KEY(id,name));


四、表操作及索引

  • DROP TABLE [IF EXISTS] 'tbl_name';

  • ALTER TABLE 'tbl_name'
    字段:
    添加字段:add
    ADD col1 data_type [FIRST|AFTER col_name] 刪除字段:drop
    修改字段:
    alter(默認值), change(字段名), modify(字段屬性)
    索引:
    添加索引:add index
    刪除索引: drop index
    表選項
    修改:

  • 查看表上的索引:SHOW INDEXES FROM [db_name.]tbl_name;

  • 查看幫助:Help ALTER TABLE


#修改表示例
ALTER TABLE students RENAME s1;

ALTER TABLE s1 ADD phone varchar(11) AFTER name;

ALTER TABLE s1 MODIFY phone int;

ALTER TABLE s1 CHANGE COLUMN phone mobile char(11);

ALTER TABLE s1 DROP COLUMN mobile;

Help ALTER TABLE 查看幫助

ALTER TABLE students ADD gender ENUM('m','f')

ALETR TABLE students CHANGE id sid int UNSIGNED NOT NULL PRIMARY KEY;
ALTER TABLE students ADD UNIQUE KEY(name);

ALTER TABLE students ADD INDEX(age);

DESC students;

SHOW INDEXES FROM students;

ALTER TABLE students DROP age;


  • 索引是特殊數據結構;定義在查找時作為查找條件的字段
    優點:提高查詢速度
    缺點:占用額外空間,影響插入速度

  • 創建索引必須要有索引名稱

  • 創建索引:
    CREATE INDEX index_name ON tbl_name (index_col_name,...);
    help CREATE INDEX

  • 刪除索引:
    DROP INDEX index_name ON tbl_name;

  • 查看索引:
    SHOW INDEXES FROM [db_name.]tbl_name;



五、語句及賬號授權


1、DML語句

  • DML: INSERT, DELETE, UPDATE
    ?INSERT
    INSERT [INTO] tbl_name [(col_name,...)] {VALUES | VALUE} (val1,...),(...),...
    ?UPDATE:
    UPDATE tbl_name SET col1=val1, col2=val2, ... [WHERE clause] [ORDER BY 'col_name' [DESC]] [LIMIT [m,]n];
    ?DELETE:
    DELETE FROM tbl_name [WHERE clause] [ORDER BY 'col_name' [DESC]] [LIMIT [m,]n];
    可先排序再指定刪除的行數
    ?TRUNCATE TABLE tbl_name; 清空表


2、DQL語名

  • DQL:SELECT
    ?SELECT col1,col2,... FROM tbl_name [WHERE clause] [ORDER BY 'col_name' [DESC]] [LIMIT [m,]n];
    Limit m,n 跳過m個,要n個

  • 字段表示法:
    *: 所有字段
    as:字段別名,col1 AS alias1


3、DQL語句

  • WHERE clause:
    操作符:
    =, != >, <, >=, <=
    BETWEEN ... AND ...
    LIKE:
    %:任意長度的任意字符
    _:任意單個字符;
    RLIKE:正則表達式模式匹配
    IS NULL ,IS NOT NULL
    IN (val1,val2,…) NOT IN (val1,val2,…)
    條件邏輯操作:
    AND,OR,NOT


#示例
DESC students;

INSERT INTO students VALUES(1,'tom','m'),(2,'alice','f');

INSERT INTO students(id,name) VALUES(3,'jack'),(4,'allen');

SELECT * FROM students WHERE id < 3;

SELECT * FROM students WHERE gender='m';

SELECT * FROM students WHERE gender IS NULL;

SELECT * FROM students WHERE gender IS NOT NULL;

SELECT * FROM students ORDER BY name DESC LIMIT 2;

SELECT * FROM students ORDER BY name DESC LIMIT 1,2;

SELECT * FROM students WHERE id >=2 and id <=4

SELECT * FROM students WHERE BETWEEN 2 AND 4

SELECT * FROM students WHERE name LIKE ‘t%’

SELECT * FROM students WHERE name RLIKE '.*[lo].*';

SELECT id stuid,name as stuname FROM students

3、用戶賬號

  • 用戶賬號:'user'@'host'
    user: 用戶名
    host: 允許用戶通過哪些主機遠程連接mysqld服務
    IP、網絡地址、主機名、通配符(%和_)

  • 創建用戶:
    CREATE USER 'username'@'host' [IDENTIFIED BY 'password'];

  • 查看當前用戶:
    SELECT user();

  • 查看用戶:
    SELECT User,Host,Password FROM user;

  • 刪除用戶:DROP USER 'username'@'host';
    示例:刪除默認的空用戶
    DROP USER ''@'localhost';

  • 更改口令:
    1)SET PASSWORD FOR 'user'@'host' = PASSWORD(‘password');
    2) UPDATE user SET password=PASSWORD('magedu') WHERE User='root' ;
    註意:上面修改表的命令不會馬上生效,需執行FLUSH PRIVILEGES生效
    3) /usr/local/mysql/bin/mysqladmin -u root –poldpassword password 'newpassword'


4、授權

  • 權限級別:管理權限、數據庫、表、字段、存儲例程
    ?Help GRANT
    ?GRANT priv_type,... ON [object_type] db_name.tb_name TO 'user'@'host' [IDENTIFIED BY 'password'] [WITH GRANT OPTION];
    ?priv_type: ALL [PRIVILEGES]
    ?db_name.tb_name:
    *.*: 所有庫的所表
    db_name.*: 指定庫的所有表
    db_name.tb_name: 指定庫的指定表
    db_name.routine_name:指定庫的存儲過程和函數

  • 示例:
    GRANT SELECT,DELETE on testdb.* TO ‘testuser’@‘%’IDENTIFIED BY 'testpass';

  • 查看指定用戶獲得的授權:
    Help SHOW GRANTS
    SHOW GRANTS FOR 'user'@'host';
    SHOW GRANTS FOR CURRENT_USER[()];

  • 回收授權:
    REVOKE priv_type, ... ON db_name.tb_name FROM 'user'@'host'
    示例:
    REVOKE DELETE ON testdb.* FROM 'testuser'@'%'

  • 註意:MariaDB服務進程啟動時會讀取mysql庫中所有授權表至內存
    (1) GRANT或REVOKE等執行權限操作會保存於系統表中,MariaDB的服務進程通常會自動重讀授權表,使之生效
    (2) 對於不能夠或不能及時重讀授權表的命令,可手動讓MariaDB的服務進程重讀授權表:mysql> FLUSH PRIVILEGES;


六、簡單操作

1、查看目前軟件使用版本信息

MariaDB [(none)]> \s
--------------
mysql  Ver 15.1 Distrib 5.5.59-MariaDB, for Linux (x86_64) using readline 5.1
Connection id:          21
Current database:
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server:                 MariaDB
Server version:         5.5.59-MariaDB Source distribution
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /app/mysql/mysql.sock
Uptime:                 7 hours 34 min 42 sec
Threads: 2  Questions: 128  Slow queries: 0  Opens: 4  Flush tables: 2  Open tables: 28  Queries per second avg: 0.004
--------------


2、數據庫中執行shell命令

MariaDB [(none)]> \! pwd
/root

MariaDB [(none)]> \! ls /app/
mysql  website  website2  website3


3、修改mysql提示符

  • --prompt=format_str

    The prompt command reconfigures the default mysql> prompt. The string for defining the prompt can contain the following special sequences.(prompt命令重新配置默認的mysql>提示符。用於定義提示符的字符串可以包含以下特殊序列。)


│ 選項 │ 說明 |

│\ c│計數器對於您發出的每個聲明都會遞增

│\ D│全部日期

│\ d│默認數據庫

│\ h│服務器主機

│\ l│當前分隔符(5.1.12新增)

│\ m│當前時間的分鐘

│\ n│換行符

│\ O│以三個字母的格式顯示當月(1月,2月,...)

│\ o│數字格式的當前月份

│\ P│am / pm

│\ p│當前的TCP / IP端口或套接字文件

│\ R│目前時間,在24小時軍事時間(0-23)

│\ r│當前時間,標準12小時時間(1-12)

│\ S│分號

│\ s│當前時間的秒數

│\ t│制表符

│\ U│完整的用戶名@主機名帳戶名

│\ u│你的用戶名

│\ v│服務器版本

│\ w│以三個字母的格式(星期一,二,...)

│\ Y│本年度,四位數字

│\ y│本年度,兩位數字

│\ _│一個空格

│\ │空格(空格跟在反斜杠後面)

│\' │單引號

│\“│雙引號

│\\ │文字“\”反斜杠字符

│\ x│x,對於以上未列出的任何“x”


  • 示例

    使用環境變量。您可以將MYSQL_PS1環境變量設置為提示字符串。
    例如:shell> export MYSQL_PS1 ="(\u@\h) [\d]>"

    使用命令行選項。您可以在命令行上將--prompt選項設置為mysql。對於
    例如:shell> mysql --prompt ="(\u@\h) [\d]>"
    (用戶@主機)[數據庫]>

    使用選項文件。您可以在任何MariaDB選項的[mysql]組中設置提示選項文件,例如/etc/my.cnf或主目錄中的.my.cnf文件。

    例如:[MySQL的]

    prompt=(\\u@\\h)[\\d]>\\_

    在這個例子中,請註意反斜杠加倍。如果使用選項文件中的提示選項設置提示,建議在使用特殊提示選項時加倍反斜杠。可選提示選項集和選項文件中識別的一組特殊轉義序列有一些重疊。如果使用單個反斜杠,重疊可能會導致問題。例如,\ s被解釋為一個空格而不是當前的秒數值。以下示例顯示了如何在選項文件中定義提示以包含HH:MM:SS>格式的當前時間:

    [MySQL的]
    prompt ="\\r:\\m:\\s>"

    交互式設置提示。您可以使用提示符(或\ R)命令交互式地更改提示。例如:+

    mysql> prompt (\u@\h) [\d]>\_
    PROMPT set to ′(\u@\h) [\d]>\_′
    (user@host)[database]>
    (user@host) [database]> prompt
    Returning to default PROMPT of mysql>
    mysql>


[root@centos7mini~]#vim /etc/my.cnf.d/mysql-clients.cnf 
#
# These groups are read by MariaDB command-line tools
# Use it for options that affect only one utility
#
[mysql]
prompt=(\\u@\\h) [\\d]>\\_


4、查看user表中用戶信息

MariaDB [(none)]> select user,host,password from mysql.user;  
+--------+----------------+-------------------------------------------+
| user   | host           | password                                  |
+--------+----------------+-------------------------------------------+
| root   | localhost      |                                           |
| root   | centos6-server |                                           |
| root   | 127.0.0.1      |                                           |
| root   | ::1            |                                           |
|        | localhost      |                                           |
|        | centos6-server |                                           |
| syslog | 192.168.1.102  | *128977E278358FF80A246B5046F51043A2B1FCED |
| syslog | 192.168.1.%    | *128977E278358FF80A246B5046F51043A2B1FCED |
+--------+----------------+-------------------------------------------+
8 rows in set (0.00 sec)


5、在數據庫中修改root口令


MariaDB [(none)]> \! passwd

Changing password for user root.

New password:


6、查詢安裝程序的路徑


[root@centos7mini~]#mysql -e 'show variables like "basedir";'

+---------------+------------------+
| Variable_name | Value            |
+---------------+------------------+
| basedir       | /usr/local/mysql |
+---------------+------------------+

註意:如果是yum 及 二進制安裝,實現多實例可以不用指定--basedir,但如果是源碼編譯,實現多實例,必須制定 --basedir= 的路徑


7、yum安裝高版本mariadb

  • 官網找到高版本yum源地址

  • 添加base倉庫

[root@centos6-mini~]#vim /etc/yum.repos.d/mariadb.repo

[mariadb]
name = MariaDB
baseurl = 
http://yum.mariadb.org/10.2/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

[root@centos6-mini~]#yum info MariaDB-server  
[root@centos6-mini~]#service mysql start

MariaDB [(none)]> \s
--------------
mysql  Ver 15.1 Distrib 10.2.13-MariaDB, for Linux (x86_64) using readline 5.1
Connection id:          9
Current database:
Current user:           Server:                 MariaDB
Server version:         10.2.13-MariaDB MariaDB Server

8、修改多實例數據庫登陸口令


#第一種修改方法
[root@centos7mini~]#mysqladmin -uroot -S /mysqldb/3307/socket/mysql.sock password 'centos'


#第二種修改方法
MariaDB [(none)]> update mysql.user set password=password("centos") where user='root';
Query OK, 4 rows affected (0.01 sec)
Rows matched: 4  Changed: 4  Warnings: 0
MariaDB [(none)]> select user,password,host from mysql.user;
+------+-------------------------------------------+--------------+
| user | password                                  | host         |
+------+-------------------------------------------+--------------+
| root | *128977E278358FF80A246B5046F51043A2B1FCED | localhost    |
+------+-------------------------------------------+--------------+

MariaDB [(none)]> flush privileges;                #註意,修改表格,一定要刷新
Query OK, 0 rows affected (0.01 sec)

9、刪除匿名用戶

MariaDB [(none)]> drop user ''@localhost ;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> drop user ''@'centos6-mini';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;                 #註意,修改表格,一定要刷新
Query OK, 0 rows affected (0.01 sec)

10、查看默認使用的字符集

#yum安裝的信息
MariaDB [(none)]> show variables like '%character_set%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |        #客戶端
| character_set_connection | utf8                       |        #連接
| character_set_database   | latin1                     |        #數據庫
| character_set_filesystem | binary                     |        #文件系統
| character_set_results    | utf8                       |        #結果
| character_set_server     | latin1                     |        #服務器
| character_set_system     | utf8                       |        #系統
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)

#源碼編譯安裝的信息
MariaDB [(none)]> show variables like '%character_set%';
+--------------------------+----------------------------+
| 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       | /app/mysql/share/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)


11、破解數據庫口令

#第一步,進入主配置文件,加入關鍵字
[root@centos7mini~]#vim /etc/my.cnf
[mysqld]
skip_grant_tables
[root@centos7mini~]#systemctl restart mariadb

#第二步,進入數據庫進行口令修改
MariaDB [(none)]> updata mysql.user set password=password("centos") where host='localhost';
#註意,生產環境中,一定要註意where,如果沒帶,對整個表修改,是非常危險的。

#第三步,修改主配置文件,去掉加入的關鍵字


12、用戶登錄賬號密碼免輸入

[root@centos7mini~]#vim /etc/my.cnf.d/clinent.cnf
[clinent]
user=root
password=centos

Linux學習之路--Mariadb(3)基本使用操作【20】---20180123