MySQL 常用功能(索引,權限管理)

索引

  • 查看索引

    show index from 表名

  • 創建索引

    create index 索引名稱 on 表名(字段名稱(長度))

  • 刪除索引

    drop index 索引名稱 on 表名

  • 開啓運行時間監測

    set profiling=1

  • 查看執行時間

    show profiles

權限

  • 查看user表

    desc user

  • 查看所有用戶

    select host,user,authentication_string from user;

    host主機,user用戶名,authentication_string爲加密後密碼

  • 創建賬戶&授權

    grant 權限列表 on 數據庫 to '用戶名'@'主機' identified by '密碼'

  • 查看用戶權限

    show grants for 用戶名@主機;

  • 創建所有表所有ip權限用戶

    grant all privileges on 庫名.* to '用戶名'@'%' identified by '密碼';

  • 修改權限

    grant 權限名稱 on 數據庫 to 賬戶@主機 with grant option;

  • 修改密碼

    update user set authentication_string=password('新密碼') where user='用戶名';

  • 刷新權限

    flush privileges

  • 遠程登陸暴力方式(慎用)

    /etc/mysql/mysql.conf.d/mysqld.cnf

    註釋掉當前文件中 ping-address = 127.0.0.1

  • 刪除用戶

    drop user '用戶名'@'主機';

    delete from user where user='用戶名';

配置主從

  1. 備份

    mysqldump -u用戶名 -p密碼 --all-databases --lock-all-tables > ~/master_db.sql

  2. 複製(同步之前文件)

    mysql –u用戶名 –p密碼 < master_db.sql

  3. 修改配置文件(主)

    sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

    83和84行(大約位置):

    server-id  = 1
    log_bin  = /var/log/mysql/mysql-bin.log
    
  4. 重啓

    sudo service mysql restart

  5. 創建子賬號(參上文)

  6. 查看主服務器二進制日誌信息

    show master status;

    File 爲使用的日誌文件名字,Position爲使用的文件位置

  7. 配置從機

    更改service-id = 2

  8. 重啓

  9. 鏈接主機

    change master to master_host='x.x.x.x', master_user='', master_password='',master_log_file='第6步File字段中數據', master_log_pos=第6Position字段數據;
    
  10. 開啓同步(從)

    start slave;

  11. 查看同步狀態

    show slave status \G

其他

SQL語句主要分爲:

  • DQL:數據查詢語言,用於對數據進行查詢,如select
  • DML:數據操作語言,對數據進行增加、修改、刪除,如insert、udpate、delete

  • TPL:事務處理語言,對事務進行處理,包括begin transaction、commit、rollback

  • DCL:數據控制語言,進行授權與權限回收,如grant、revoke
  • DDL:數據定義語言,進行數據庫、表的管理等,如create、drop
  • CCL:指針控制語言,通過控制指針完成表的操作,如declare cursor

常用數據類型

數值類型(常用)

類型 字節大小 有符號範圍(Signed) 無符號範圍(Unsigned)
TINYINT 1 -128 ~ 127 0 ~ 255
SMALLINT 2 -32768 ~ 32767 0 ~ 65535
MEDIUMINT 3 -8388608 ~ 8388607 0 ~ 16777215
INT/INTEGER 4 -2147483648 ~2147483647 0 ~ 4294967295
BIGINT 8 -9223372036854775808 ~ 9223372036854775807 0 ~ 18446744073709551615

字符串

類型 字節大小 示例
CHAR 0-255 類型:char(3) 輸入 ‘ab’, 實際存儲爲’ab ‘, 輸入’abcd’ 實際存儲爲 ‘abc’
VARCHAR 0-255 類型:varchar(3) 輸 ‘ab’,實際存儲爲’ab’, 輸入’abcd’,實際存儲爲’abc’
TEXT 0-65535 大文本

日期時間類型

類型 字節大小 示例
DATE 4 ‘2020-01-01’
TIME 3 ‘12:29:59’
DATETIME 8 ‘2020-01-01 12:29:59’
YEAR 1 ‘2017’
TIMESTAMP 4 ‘1970-01-01 00:00:01’ UTC ~ ‘2038-01-01 00:00:01’ UTC

三範式

目前大約有8中範式,只需要瞭解三範式即可

  • 第一範式(1NF)

    強調的時列的原子性,即列不能夠再分成其他幾列

  • 第二範式

    首先是1NF,另外包含兩部分內容,一是表必須有一個主鍵,而是沒有包含在主鍵中的列必須完全依賴於主鍵,而不能只依賴於主鍵的一部分

  • 第三範式

    首先是2NF,另外非主鍵列必須直接依賴於主鍵,不能存在傳遞依賴,即不能存在:非主鍵列A依賴於非主鍵列B,非主鍵列B依賴於主鍵的情況

事務

  • 開啓事務

    begin;

    start transaction;

  • 提交事務

    commit;

  • 事務回滾

    rollback;

初級防止SQL注入的方式: 構建參數列表,傳入查詢語句中

# 構造參數列表
params = [find_name]
# 執行select語句,並返回受影響的行數:查詢所有數據
count = c.execute('select * from goods where name=%s', params)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章