日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库高级知识——mysql架构介绍(一)

發布時間:2024/7/19 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库高级知识——mysql架构介绍(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1.MySQL簡介
      • 1.1 概述
      • 1.2 Mysql高級
    • 2.Mysql Linux版的安裝
      • 2.1 MySQL下載官網
      • 2.2 安裝與卸載
      • 2.3 查看MySQL安裝版本
      • 2.4 mysql服務的啟+停
      • 2.5 登錄mysql
      • 2.6 設置開機自啟動
      • 2.7 MySQL相關文件
      • 2.8 修改字符集
    • 3.Mysql配置文件
      • 3.1二進制日志log-bin
      • 3.2 錯誤日志log-error
      • 3.3 慢查詢日志log
    • 4.Mysql 的用戶與權限管理
      • 4.1 MySQL的用戶管理
      • 4.2 權限管理

1.MySQL簡介

1.1 概述

MySQL是一個關系型數據庫管理系統,由瑞典MySQL AB公司開發,目前屬于Oracle公司。 MySQL是一種關聯數據庫管理系統,將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度并提高了靈活性。Mysql是開源的,所以你不需要支付額外的費用。 Mysql是可以定制的,采用了GPL協議,你可以修改源碼來開發自己的Mysql系統。Mysql支持大型的數據庫。可以處理擁有上千萬條記錄的大型數據庫。 MySQL使用標準的SQL數據語言形式。 Mysql可以允許于多個系統上,并且支持多種語言。這些編程語言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。 MySQL支持大型數據庫,支持5000萬條記錄的數據倉庫,32位系統表文件最大可支持4GB,64位系統支持最大的表文件為8TB。

1.2 Mysql高級

數據庫內部結構和原理 數據庫建模優化 數據庫索引建立 SQL語句優化 SQL編程 mysql服務器的安裝配置 數據庫的性能監控分析與系統優化 各種參數常量設定 主從復制 分布式架構搭建、垂直切割和水平切割 數據遷移 容災備份和恢復 shell或python等腳本語言開發 對開源數據庫進行二次開發

2.Mysql Linux版的安裝

Ubuntu20.04+MySQL8.0.25

2.1 MySQL下載官網

MySQL linux版

2.2 安裝與卸載

安裝:
MySQL安裝

卸載:
參考1
參考2

2.3 查看MySQL安裝版本

或者可以執行 mysqladmin --version命令,類似java -version如果打出消息,即為成功。

通過vim 查看 mysql組 和mysql組

2.4 mysql服務的啟+停

啟動:

關閉:

查看MySQL狀態:

sudo service mysql status root@zhaoxr-ThinkPad-E450:/etc/mysql# service mysql status ● mysql.service - MySQL Community ServerLoaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)Active: active (running) since Thu 2021-05-27 16:13:51 CST; 13min agoProcess: 78631 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)Main PID: 78639 (mysqld)Status: "Server is operational"Tasks: 38 (limit: 4343)Memory: 334.3MCGroup: /system.slice/mysql.service└─78639 /usr/sbin/mysqld527 16:13:49 zhaoxr-ThinkPad-E450 systemd[1]: Starting MySQL Community Server... 527 16:13:51 zhaoxr-ThinkPad-E450 systemd[1]: Started MySQL Community Server.

2.5 登錄mysql

切換到root用戶,使用root用戶可以不用密碼直接登錄 root@zhaoxr-ThinkPad-E450:/home/zhaoxr/mysql# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 8.0.25-0ubuntu0.20.04.1 (Ubuntu)Copyright (c) 2000, 2021, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>

2.6 設置開機自啟動

設置開機自啟動:

sudo update-rc.d -f mysql defaults

關閉開機自啟動:

sudo update-rc.d -f mysql remove

查看MySQL狀態:

sudo service mysql status

2.7 MySQL相關文件

文件位置解釋
/usr/bin客戶端程序和mysql_install_db
/var/lib/mysql數據庫和日志文件
/var/run/mysqld服務器
/etc/mysql配置文件my.cnf
/usr/share/mysql字符集,基準程序和錯誤消息
/etc/init.d/mysql啟動mysql服務器

2.8 修改字符集

查看字符集

show variables like '%char%'; show variables like '%char%'; mysql> show variables like 'character%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8mb3 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.01 sec)mysql> show variables like '%char%'; +--------------------------------------+----------------------------+ | Variable_name | Value | +--------------------------------------+----------------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8mb3 | | character_sets_dir | /usr/share/mysql/charsets/ | | validate_password.special_char_count | 1 | +--------------------------------------+----------------------------+ 9 rows in set (0.00 sec)

修改

3.Mysql配置文件

Ubuntu20.04+MySQL8.0.25的配置文件 /etc/mysql /etc/mysql/mysql.conf.d root@zhaoxr-ThinkPad-E450:/etc/mysql/mysql.conf.d# cat mysqld.cnf # # The MySQL database server configuration file. # # One can use all long options that the program supports. # Run program with --help to get a list of available options and with # --print-defaults to see which it would actually understand and use. # # For explanations see # http://dev.mysql.com/doc/mysql/en/server-system-variables.html# Here is entries for some specific programs # The following values assume you have at least 32M ram[mysqld] # # * Basic Settings # user = mysql # pid-file = /var/run/mysqld/mysqld.pid # socket = /var/run/mysqld/mysqld.sock # port = 3306 # datadir = /var/lib/mysql# If MySQL is running as a replication slave, this should be # changed. Ref https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_tmpdir # tmpdir = /tmp # # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. bind-address = 127.0.0.1 mysqlx-bind-address = 127.0.0.1 # # * Fine Tuning # key_buffer_size = 16M # max_allowed_packet = 64M # thread_stack = 256K# thread_cache_size = -1# This replaces the startup script and checks MyISAM tables if needed # the first time they are touched myisam-recover-options = BACKUP# max_connections = 151# table_open_cache = 4000# # * Logging and Replication # # Both location gets rotated by the cronjob. # # Log all queries # Be aware that this log type is a performance killer. # general_log_file = /var/log/mysql/query.log # general_log = 1 # # Error log - should be very few entries. # log_error = /var/log/mysql/error.log # # Here you can see queries with especially long duration # slow_query_log = 1 # slow_query_log_file = /var/log/mysql/mysql-slow.log # long_query_time = 2 # log-queries-not-using-indexes # # The following can be used as easy to replay backup logs or for replication. # note: if you are setting up a replication slave, see README.Debian about # other settings you may need to change. # server-id = 1 # log_bin = /var/log/mysql/mysql-bin.log # binlog_expire_logs_seconds = 2592000 max_binlog_size = 100M # binlog_do_db = include_database_name # binlog_ignore_db = include_database_name

3.1二進制日志log-bin

log_bin = /var/log/mysql/mysql-bin.log log-bin 中存放了所有的操作記錄(寫?),可以用于恢復。相當于 Redis 中的 AOF log-bin配置(默認關閉)

3.2 錯誤日志log-error

log_error = /var/log/mysql/error.log

默認是打開的,記錄嚴重的警告和錯誤信息,每次啟動和關閉的詳細信息等。

3.3 慢查詢日志log

slow_query_log_file = /var/log/mysql/mysql-slow.log 默認關閉,記錄查詢的sql語句,如果開啟會減低mysql的整體性能,因為記錄日志也是需要消耗系統資源的 可自定義“慢”的概念:0-10秒之間的一個數。 慢查詢日志會將超過這個查詢事件的查詢記錄下來,方便找到需要優化的 sql 。 用于優化sql語句是使用。

4.Mysql 的用戶與權限管理

4.1 MySQL的用戶管理

查看密碼校驗規范:

mysql> SHOW VARIABLES LIKE 'validate_password%'; +--------------------------------------+-------+ | Variable_name | Value | +--------------------------------------+-------+ | validate_password.check_user_name | ON | | validate_password.dictionary_file | | | validate_password.length | 8 | | validate_password.mixed_case_count | 1 | | validate_password.number_count | 1 | | validate_password.policy | LOW | | validate_password.special_char_count | 1 | +--------------------------------------+-------+ 7 rows in set (0.00 sec) 各個密碼等級,可以設置的賬戶密碼如下所示:

賬戶密碼設置規范

創建用戶:

mysql>create user zhang3 identified by '123123'; #表示創建名稱為zhang3的用戶,密碼設為123123;

查看用戶:

mysql> select user, host, plugin, authentication_string from mysql.user; +------------------+-----------+-----------------------+------------------------------------------------------------------------+ | user | host | plugin | authentication_string | +------------------+-----------+-----------------------+------------------------------------------------------------------------+ | zhaoxr | % | caching_sha2_password | $A$005$^-~pbXT1[86`p3gH2nttGGHB5FpbQgt7TeCCDEMhUKJRZp.VDgqYZj9D | | debian-sys-maint | localhost | caching_sha2_password | $A$005$R UJ|`]!LfSpJ7Re9jW5ODzmiNgfyP/4ncIV73 | | mysql.infoschema | localhost | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | | mysql.session | localhost | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | | mysql.sys | localhost | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | | root | localhost | auth_socket | | +------------------+-----------+-----------------------+------------------------------------------------------------------------+ 6 rows in set (0.00 sec) host : 表示連接類型% 表示所有遠程通過 TCP方式的連接IP 地址 如 (192.168.1.2,127.0.0.1) 通過制定ip地址進行的TCP方式的連接機器名 通過制定i網絡中的機器名進行的TCP方式的連接::1 IPv6的本地ip地址 等同于IPv4的 127.0.0.1localhost 本地方式通過命令行方式的連接 ,比如mysql -u xxx -p 123xxx 方式的連接。User:表示用戶名同一用戶通過不同方式鏈接的權限是不一樣的。

刪除用戶

mysql> drop user li4 ;#刪除li4用戶

4.2 權限管理

授予權限:

授權命令: grant 權限1,權限2,…權限n on 數據庫名稱.表名稱 to 用戶名@用戶地址 identified by ‘連接口令’; 該權限如果發現沒有該用戶,則會直接新建一個用戶。 比如 grant select,insert,delete,drop on atguigudb.* to li4@localhost ; 給li4用戶用本地命令行方式下,授予atguigudb這個庫下的所有表的插刪改查的權限。grant all privileges on *.* to joe@'%' [identified by '123']; 授予通過網絡方式登錄的的joe用戶 ,對所有庫所有表的全部權限,[密碼設為123]可以不用加. 就算 all privileges 了所有權限,grant_priv 權限也只有 root 才能擁有。給 root 賦連接口令 grant all privileges on *.* to root@'%' ;后新建的連接沒有密碼,需要設置密碼才能遠程連接。 update user set password=password('root') where user='root' and host='%';

收回權限:

收回權限: revoke 權限1,權限2,…權限n on 數據庫名稱.表名稱 from 用戶名@用戶地址 ;REVOKE ALL PRIVILEGES ON mysql.* FROM joe@localhost; #若賦的全庫的表就 收回全庫全表的所有權限REVOKE select,insert,update,delete ON mysql.* FROM joe@localhost; #收回mysql庫下的所有表的插刪改查權限對比賦予權限的方法。必須用戶重新登錄后才能生效

查看權限:

查看當前用戶權限 show grants;查看某用戶的全局權限 select * from user ;查看某用戶的某庫的權限 select * from db;查看某用戶的某個表的權限 select * from tables_priv;

總結

以上是生活随笔為你收集整理的数据库高级知识——mysql架构介绍(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。