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

歡迎訪問 生活随笔!

生活随笔

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

数据库

MySQL管理员篇

發布時間:2025/7/14 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL管理员篇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

  • 安裝與升級

    • 二進制包安裝

      • 依賴

        • mysql依賴libaio庫,如果沒有這個庫,數據目錄和啟動mysql會失敗

        • shell> groupadd mysql

        • shell> useradd -r -g mysql mysql

        • shell> cd /usr/local

        • shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz

        • shell> ln -s full-path-to-mysql-VERSION-OS mysql

        • shell> cd mysql

        • shell> mkdir mysql-files

        • shell> chmod 770 mysql-files

        • shell> chown -R mysql .

        • shell> chgrp -R mysql .

        • shell> bin/mysql_install_db --user=mysql ? ?# Before MySQL 5.7.6

        • shell> bin/mysqld --initialize-security ?--user=mysql # MySQL 5.7.6 and up

        • shell> bin/mysql_ssl_rsa_setup ? ? ? ? ? ? ?# MySQL 5.7.6 and up

        • shell> chown -R root .

        • shell> chown -R mysql data mysql-files

        • shell> bin/mysqld_safe --user=mysql &

        • # Next command is optional

        • shell> cp support-files/mysql.server /etc/init.d/mysql.server

    • 源碼安裝

      • 依賴

        • CMake

        • make

        • ansi c++編譯器

        • 如果想要運行test腳本,perl被需要

      • 步驟

        • groupadd mysql

        • useradd -r -g mysql mysql

        • tar zxvf mysql-version.tar.gz

        • cd mysql-version

        • cmake . ? ? ? ? ? ? ? ? ? ? ? ?[這里可以攜帶參數]-DCMAKE_INSTALL_PREFIX=安裝目錄

        • make

        • make install

        • cd /usr/local/msyql

        • chown -R mysql:mysql .

        • bin/mysql_install_db --user=mysql [5.7.6之前版本]

        • bin/mysqld --initialize-insecure --user=mysql [5.7.6 及以后版本]

        • bin/mysql_ssl_rsa_setup [5.7.6 及以后需版本]

        • chown -R root .

        • chown -R mysql:mysql 數據庫數據目錄?

        • bin/mysqld_safe --user=mysql &

    • 升級

      • yum包升級

        • yum update mysql-server

        • 重啟mysql服務器

        • 運行mysql_upgrade

      • 步驟

        • 方案一

          • 停止mysql5.6服務器

          • 升級mysql-server

          • 啟動mysql服務器

          • 運行mysql_upgrade

        • 方案二

          • mysqldump --all-databases --routings --events --add-drop-tables --flush-privileges=0 > data-for-upgrade.sql

          • 停止mysql5.6服務器

          • 安裝mysql5.7

          • 初始化數據目錄 mysqld --initialize --datadir=目錄

          • 啟動服務器使用新的數據目錄

          • mysql>source data-for-upgrade.sql

          • 運行mysql_upgrade升級系統表等

      • 如果跨越多個主版本號,如5.5升級到5.7,建議先5.5升級5.6,再5.6升級5.7

        • 升級5.5到5.6

        • 啟動新的數據庫

        • 運行mysql_upgrade

        • 升級5.6到5.7

        • 啟動新的數據庫

        • 運行mysql_upgrade

      • 降級

        • 在安裝目錄中找到mysql_system_tables_fix_for_downgrade.sql文件

        • mysql < mysql_system_tables_fix_for_downgrade.sql

        • 備份所有表 mysqldump --all-databases > dump.sql

        • 停止mysql數據庫,啟動老版本的數據庫

        • mysql < dump.sql

        • 重啟老板數據庫

        • 由于不同的版本數據庫引擎可能不同,需要將新版本中表的數據庫引擎改成老版本的數據庫引擎,如 alter table tab_name ENGINE=MyISAMA STATS_PRESISTENT=DEFAULT

    • 拷貝數據庫到另外一臺主機

      • mysqladmin -h 'other_hostname' create db_name

      • mysqldump db_name | mysql -h 'other_hostname' db_name

    • 從遠程主機拷貝數據

      • mysqladmin create db_name

      • mysqldump -h 'other_hostname' --compress db_name | mysql db_name

  • 安全

    • 安全向導

      • 使用mysql -u root 測試連接root用戶是否需要輸入密碼

      • 使用show grants查看用戶的訪問權限

      • 不要存明文密碼,可以使用SHA2,SHA1,MD5轉化后存

    • 保持密碼安全

      • 終端用戶的密碼安全

        • 使用mysql登錄選項p時,不要直接指定密碼

        • 將密碼存在配置文件中,[client] 節點下的password=yourpassword,然后保證利用系統的權限機制保證該配置文件的訪問權限

        • 使用mysql_config_editor保存密碼,會生成.mylogin.cnf文件,mysql會讀取該文件

          • mysql_config_editor set --user=root --socket=/var/run/mysql/mysql.sock --password

          • mysql_config_editor set --user=root --host=127.0.0.1 --port=3306 --socket=/var/run/mysql/mysql.sock --password

      • 管理員的密碼安全

        • mysql密碼存放在mysql.user表中,非管理員用戶不應該具有訪問該表的權限

      • 密碼和日志

        • 直接使用insert,update操作mysql.user表中的密碼字段,可能會被明文寫到日志里面去

        • create user , grant,set password,密碼字段在日志會被隱藏

    • 使得mysql防御攻擊

      • 確保每個用戶都有密碼

      • 確保只有運行mysqld的用戶具有對數據庫數據目錄的讀寫權限

      • 絕不要用root用戶運行mysql服務器

      • 不要授權file,process,super權限給非管理員用戶

    • mysql權限訪問系統

      • mysql提供的權限

        • 權限分類

          • 管理員權限

          • 數據庫權限

          • 數據庫對象權限(表,索引等)

        • 權限名

          • CREATE ? ? ? ? ? ? ? ? ? ? ? ? ? ? databases, tables, or indexs

          • DROP ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?databases, tables, or indexs

          • GRANT_OPTION ? ? ? ? ? ? ? databases, tables, or stored routines, 允許你授權的權限

          • LOCK_TABLES ? ? ? ? ? ? ? ? ? databases

          • REFERENCES ? ? ? ? ? ? ? ? ? ? databases or tables

          • EVENT ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? databases or tables

          • ALTER ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?tables

          • DELETE ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?tables

          • INDEX ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?tables

          • INSERT ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? tables or columns

          • SELECT ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? tables or columns

          • UPDATE ? ? ? ? ? ? ? ? ? ? ? ? ? ? tables or columns

          • CREATE TEMPORARY TABLES ? ? ? ? ? ? tables

          • TRIGGER ? ? ? ? ? ? ? ? ? ? ? ? ? ?tables

          • CREATE VIEW ? ? ? ? ? ? ? ? ? ?views

          • SHOW VIEW ? ? ? ? ? ? ? ? ? ? ?views

          • ALTER ROUTINE ? ? ? ? ? ? ? ?stored routines

          • CREATE ROUTINE ? ? ? ? ? ? ?stored routines

          • EXECUTE ? ? ? ? ? ? ? ? ? ? ? ? ? ?stored routines

          • FILE ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?file accesss on server host

          • CREATE ?TABLESPACE ? ? ?server administration

          • CREATE USER ? ? ? ? ? ? ? ? ? ?server administration

          • PROCESS ? ? ? ? ? ? ? ? ? ? ? ? ? server administration

          • PROXY ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? server administration

          • RELOAD ? ? ? ? ? ? ? ? ? ? ? ? ? ?server administration

          • REPLICATION CLIENT ? ? ? server administration, 運行用戶使用show master status,show slave status 和show binary logs

          • REPLICATION SLAVE ? ? ? ?server administration

          • SHOW DATABASES ? ? ? ? ?server administration

          • SHUTDOWN ? ? ? ? ? ? ? ? ? ? server administration

          • SUPER ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? server administration

          • ALL ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?server administration ? ? ? ? ?代表所有權限除了GRANT_OPTION

          • USAGE ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? server administration

    • 用戶賬戶管理

      • 添加用戶

        • CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';

        • GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'

      • 刪除用戶

        • DROP USER 'jeffrey'@'localhost';

      • 用戶密碼修改

        • ALTER USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass'; ?5.7.6 以及以后版本修改指定用戶密碼

        • ALTER USER USER() IDENTIFIED BY 'mypass' ? ? ? ? ? ? ? ? ? ? ? ? 5.76 以及以后版本修改當前連接用戶密碼 ?

        • SET PASSWORD FOR 'jeffrey'@'localhost' = PASSWORD('mypass'); ? ? ? ?5.7.6 之前版本修改指定用戶密碼

        • GRANT USAGE ON *.* TO 'jeffrey'@'localhost' IDENTIFIED BY 'mypass'; ?5.7.6 之前版本修改指定用戶密碼

        • SET PASSWORD = PASSWORD('mypass'); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?5.76 以及以后版本修改當前連接用戶密碼

      • 密碼過期代理

        • 修改密碼為過期

          • ALTER USER 'jeffrey'@'localhost' PASSWORD EXPIRE;

        • 配置全局的密碼過期時間【5.7.6以后支持】

          • [mysqld]

          • default_password_lifetime=180 ? ? ? ? ? ? ? ? ? ? ? ? ? ? #天

          • SET GLOBAL default_password_lifetime = 180;

        • 針對某個用戶配置

          • ALTER USER 'jeffrey'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;?

          • ALTER USER 'jeffrey'@'localhost' PASSWORD EXPIRE NEVER; ? ? ?取消密碼失效

      • 插件的安裝

        • 服務器端

          • 配置文件my.cnf的mysqld節點添加plugin-load=test_plugin_server=auth_test_plugin.so其中test_plugin_server是插件名,auth_test_plugin.so是插件所在的so

          • 或者

          • mysql> INSTALL PLUGIN test_plugin_server SONAME 'auth_test_plugin.so';

        • 客戶端

          • --default-auth=plugin_name選項使得mysql client使用新的插件連接服務器

      • 代理用戶

        • 當客戶端用代理用戶連接到mysql服務器,插件必須返回被代理的用戶名

        • 代理用戶必須安裝認證插件

        • 代理用戶必須具有proxy權限?

        • eg

          • CREATE USER 'empl_external'@'localhost' IDENTIFIED WITH auth_plugin AS 'auth_string';

          • CREATE USER 'employee'@'localhost' IDENTIFIED BY 'employee_pass';

          • GRANT PROXY ON 'employee'@'localhost' TO 'empl_external'@'localhost';

  • 啟停

    • 啟動

      • mysqld

      • mysqld_safe

      • mysqld.server

      • mysqld_mutil

        • mysqld_multi [options] {start|stop|reload|report} [GNR[,GNR] ...]

        • 配置文件的例子

          • # This file should probably be in your home dir (~/.my.cnf)

          • # or /etc/my.cnf

          • # Version 2.1 by Jani Tolonen

          • [mysqld_multi]

          • mysqld ? ? = /usr/local/bin/mysqld_safe

          • mysqladmin = /usr/local/bin/mysqladmin

          • user ? ? ? = multi_admin

          • password ? = multipass

          • [mysqld2]

          • socket ? ? = /tmp/mysql.sock2

          • port ? ? ? = 3307

          • pid-file ? = /usr/local/mysql/var2/hostname.pid2

          • datadir ? ?= /usr/local/mysql/var2

          • language ? = /usr/local/share/mysql/english

          • user ? ? ? = john

          • [mysqld3]

          • socket ? ? = /tmp/mysql.sock3

          • port ? ? ? = 3308

          • pid-file ? = /usr/local/mysql/var3/hostname.pid3

          • datadir ? ?= /usr/local/mysql/var3

          • language ? = /usr/local/share/mysql/swedish

          • user ? ? ? = monty

          • [mysqld4]

          • socket ? ? = /tmp/mysql.sock4

          • port ? ? ? = 3309

          • pid-file ? = /usr/local/mysql/var4/hostname.pid4

          • datadir ? ?= /usr/local/mysql/var4

          • language ? = /usr/local/share/mysql/estonia

          • user ? ? ? = tonu

          • [mysqld6]

          • socket ? ? = /tmp/mysql.sock6

          • port ? ? ? = 3311

          • pid-file ? = /usr/local/mysql/var6/hostname.pid6

          • datadir ? ?= /usr/local/mysql/var6

          • language ? = /usr/local/share/mysql/japanese

          • user ? ? ? = jani

    • 停止

      • mysqladmin shutdown

  • 備份和恢復

    • 備份和恢復

      • 備份的類型

        • 物理備份和邏輯備份

          • 物理備份適用于大的數據,需要快速恢復

          • 邏輯備份適用于小的數據,可以在不同的機器間恢復

        • 在線備份和離線備份

        • 本地備份和遠程備份

        • 快照備份

        • 全量備份和增量備份

      • 備份的方法

        • mysqldump

          • 對于innodb數據庫,使用--single-transaction可以實現online備份

        • 直接copy數據庫文件

        • 分隔符文件備份

          • SELECT * INTO OUTFILE ? ? ?'file_name' FROM ? ? ?tbl_name

        • 利用二進制日志增量備份

          • 當服務使用--log-bin之后,可以使用增量備份

      • 備份和恢復的列子

        • 備份

          • 全量備份

            • mysqldump --single-transaction --all-databases > backup_sunday_1_PM.sql

          • 增量備份

            • flush logs后拷貝二進制日志

        • 恢復

          • 使用全量備份文件恢復

            • mysql < back_sunday_1_PM.sql

          • 使用增量備份文件恢復

            • mysqlbinlog ?mysql-bin.xxxxx | mysql

        • 使用mysqldump產生分隔符備份文件

          • mysqldump --tab=/tmp --fields-terminated-by=, --fields-enclosed-by='"' --lines-terminated-by=0x0d0a db1

        • 使用分隔符文件恢復

          • USE db1;

          • LOAD DATA INFILE 't1.txt' INTO TABLE t1 FIELDS TERMINATED BY ',' FIELDS ENCLOSED BY '"' LINES TERMINATED BY '\r\n'

          • 或者

          • mysqlimport --fields-terminated-by=, fields-enclosed-by='"' --lines-terminated-by=0x0d0a db1 t1.txt

    • 使用復制(replication )來備份

      • 使用mysqldump備份從服務器

        • 1)mysqladmin stop-slave 或者 mysql -e 'STOP SLAVE SQL_THREAD;'

        • 2)mysqldump --all-databases > fulldb.dump

        • 3)mysqladmin start-slave

      • 從從服務器備份原始數據

        • 1)mysqladmin shutdown

        • 2)tar cf /tmp/dbbackup.tar ./data

        • 3)mysqld_safe &

    • innodb的備份和恢復

      • 熱備份

        • 使用mysqlbackup

      • 冷備份

        • 1)slow shutdown

        • 2)復制innodb的數據文件(ibdata 文件和 .idb文件)

        • 3)復制.frm文件

        • 4)復制my.cnf配置文件

轉載于:https://my.oschina.net/465759695/blog/498949

總結

以上是生活随笔為你收集整理的MySQL管理员篇的全部內容,希望文章能夠幫你解決所遇到的問題。

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