MySQL資料庫部署及初始化相關
一、MySQL安裝前系統環境檢測
1.selinux和iptables需要關閉
cat /etc/sysconfig/selinux sed -i 's/enable/disable/g' /etc/sysconfig/selinux chkconfig --list|grep iptables chkconfig iptables off chkconfig --list|grep iptables
2.I/O排程系統預設是cfq模式,這裡強烈建議使用deadline模式
檢視I/O排程檔案
cat /sys/block/sda/queue/scheduler 輸出結果為: noop anticipatory deadline [cfq] 或者 noop [deadline] cfq
修改I/O排程器,需要在/etc/grub.conf中加入elevator=deadline,保證永久有效
echo “elevator=deadline” >> /etc/grub.conf
3.swap分割槽設定
swappiness值大小對如何使用swap分割槽有很大影響。有0和100兩個極限值,0代表最大限度地使用實體記憶體,然後才使用swap分割槽,這種行為有可能導致記憶體溢位,出現OOM錯誤,從而導致MYSQL被意外kill掉,所以需要謹慎設定。100是積極使用swap分割槽,並把記憶體上邊的資料及時搬到swap分割槽裡(不建議)
這裡建議不分配swap,或者分配4GB就夠了
檢視swappiness檔案:
cat /proc/sys/vm/swappiness sysctl -a | grepswap vm.swap_token_timeout = 300 0 vm.swappiness = 60
想要修改swappiness的值,編輯/etc/sysctl.conf,加入vm.swappiness的值即可。
4.檔案系統選擇
建議使用xfs檔案系統,相比ext4,它更方便管理,支援動態擴容,刪除檔案也方便
5.作業系統限制
ulimit -a
注意兩個引數
open files max user processes
open files如果設定不合理,而當前伺服器的連線數過多或者表過多時,就可能會出現打不開或者訪問不了表的現象 。預設情況下,linux的最大控制程式碼數為1024個,表示單個程式最多可以訪問1024個檔案控制程式碼,如果超過預設值,就會出現檔案控制程式碼超限的錯誤"too many open files"
max user processes
max user processes 引數的用途是,有時候我們可能會跑很多例項,但發現建立不了新的連線,報出"resource temporarily unavailable"錯誤,表示沒有足夠的資源
為了防止上述兩種報錯,修改系統的軟硬限制,編輯/etc/security/limits.conf,加入限制的相關內容。並重啟作業系統生效。
cat /etc/security/limits.conf 下邊有 * soft nproc 65535 * hard nproc 65535 * soft nofile 65535 * hard nofile 65535
6.numa關閉
關閉numa功能,可以更好分配記憶體,不需要採取swap方式獲取記憶體。使用swap可能導致資料庫效能下降
關閉方式在BIOS、作業系統中關閉,或者在資料庫啟動過程中關閉
numa --interleave=all /usr/local/mysql/bin/mysqld_safe -defaults-file=/etc/my.cnf &
二、MySQL 5.7版本安裝
建立mysql使用者,指定mysql所在使用者組
groupadd mysql useradd -g mysql mysql -s /sbin/nologin
軟體包家目錄(basedir)統一規格放在/usr/local/下面:
cd /usr/local/
解壓mysql軟體包:
tar -zxvf mysql-5.7.14-linux-glibc2.5-x86_64.tar.gz
然後做個軟連線,方便日後升級
ln -s mysql-5.7.14-linux-glibc2.5-x86_64 mysql
給mysql目錄授權
chown mysql:mysql -R mysql
建立mysql資料庫的資料目錄(datadir),可以選擇建立在/data/mysql下
mkdir -p /data/mysql
目錄授權
chown mysql:mysql -R /data/mysql
建立/etc/my.cnf檔案,修改相關配置
vim /etc/my.cnf //修改相關配置
26 [mysqld] 27 datadir = /data/mysql 新增這一行,指定資料儲存路徑
使用mysqld命令初始化資料庫
cd /usr/local/mysql/bin/ ./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysql/ --user=mysql --initialize
注:如果在初始化過程中加上–initialize引數,表示會生成一個臨時的資料庫初始化密碼,記錄在log-error(錯誤日誌)裡邊, 如果加上–initialize-insecure引數,代表無密碼進入,建議使用生成初始化密碼的方式。
啟動資料庫過程:
cd /usr/local/mysql/bin/ ./mysqld_safe --defaults-file=/etc/my.cnf &
資料庫啟動成功後,進入資料庫的初始化密碼會在/data/mysql/error.log下面:
cat /data/mysql/error.log | grep password
使用初始化密碼進入資料庫之後,修改資料庫root密碼,設定為永不過期:
mysql>set password = 'root123'; mysql>ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER; mysql>flush privileges;
##update user set password=password(‘root123’) where user=‘root’;
//低於mysql 5.7版本的資料庫需要安全加固,只保留資料庫中使用者為root、host為localhost的賬號
語句如下:
delete from user where user!='root' or host!='localhost';
關閉資料庫
cd /usr/local/mysql/bin ./mysqladmin -uroot -proot123 shutdown
非正常關閉,可以kill掉mysql程式
三、information_schema下常用表:
- tables (記錄所有表到的基本資訊是,訪問該表可收集的統計資訊)
- processlist(檢視當前資料庫的連線).也可以使用show processlist;
- GLOBAL_STATUS(檢視資料庫執行的各種狀態值)
- GLOBAL_VARIABLES(檢視資料庫中的引數)
- PARTITIONS(資料庫中表分割槽的情況)
- INNODB_LOCKS、INNODB_TRX、INNODB_LOCK_WAITS這三張表用來監控資料庫中鎖的情況
- user(用於管理資料庫中的使用者許可權資訊)
四、mysql密碼丟失
1.my.cnf增加一行
在my.cnf裡的[mysqld]下增加skip-grant-tables
重啟
2.帶有–-skip-grant-tables引數啟動跳過許可權表
登不上
看是否可以強制停庫(需要確認),檢視mysql程式號,並kill程式
ps -ef | grep mysql mysql 5097 3807 2 12:22 pst/0 00:00:00 /usr/local/mysql/bin/mysqld --defaults-file… kill -9 5097 3807
然後跳過許可權表引數,重啟資料庫
./mysql_safe --defaults-file=/etc/my.cnf --skip-grant-tables & mysql
或者
service mysqld start --skip-grant-tables
給root使用者設定新的密碼並重新整理許可權,mysql 5.7之後,mysql庫下的password欄位用authentication_string欄位代替
use mysql; update user set authentication_string=password('root') where user='root'; flush privileges;
五、mysql資料庫連線方式
linux下兩種連線方式TCP/IP連線方式和Socket
TCP/IP方式,mysql檢查一張許可權表,判斷髮起請求的客戶端ip是否允許連線到mysql例項,該表就是mysql庫下的user表
mysql -u username -p password -P port -h IP
UNIX Socket連線方式不是網路協議,只能在mysql客戶端和資料例項在同體臺伺服器時使用。可以在配置檔案中指定套接字檔案的路徑
如socket=/tmp/mysql.sock mysql -u username -p password -S /tmp/mysq.sock
六、使用者許可權
超管許可權使用者和普通使用者
1.超戶
超管: root和all privileges許可權使用者
mysql 5.6
use mysql; select user,host,password from user; ##root
mysql 5.7
use mysql; select user,host,authentication_string from user; ##root ##mysql.sys
2.普通使用者
create user 使用者名稱@主機ip identified by ‘密碼’;
為了資料庫的安全性,主機IP避免使用%,可以分配IP地址的一個網段 。注意許可權問題
給開發人員的許可權分配規則,可以只分配只讀許可權和讀寫許可權
注:不要給使用者建表,改表(create,alter)等許可權
只讀許可權只能查詢,不能進行DML操作
讀寫許可權包含insert、update、delete、select
例:
只讀使用者:
create user 'usr_read'@'172.20.10.%' identified by 'mysql123'; grant select on dbname.* to 'usr_read'@'172.20.10.%' identified by 'mysql123'; flush privileges;
讀寫使用者:
create user 'usr_readwrite'@'172.20.10.%' identified by 'mysql123'; grant select,insert,update,delete on dbname.* to 'usr_read'@'172.20.10.%' identified by 'mysql123'; flush privileges;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69990629/viewspace-2913038/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [轉]Mysql資料庫相關資料索引MySql資料庫索引
- MySQL 資料庫相關流程圖 / 原理圖MySql資料庫流程圖
- 資料庫相關資料庫
- Mysql運維-資料庫及表相關操作MySql運維資料庫
- 系統日誌及資料庫相關資訊收集資料庫
- Oracle 資料庫常見檔案及相關操作Oracle資料庫
- mysql 資料庫部署(google like?)MySql資料庫Go
- 學習大資料需要掌握MySQL資料庫的相關技能嗎?大資料MySql資料庫
- 資料庫 (相關練習)資料庫
- Oracle資料庫提高命中率及相關優化Oracle資料庫優化
- oracle例項、資料庫及相關資料庫狀態的理解和測試Oracle資料庫
- MySQL 8.0 20個 InnoDB 及資料字典相關的新特性MySql
- 初涉MySQL資料庫部署解析MySql資料庫
- Oracle資料庫提高命中率及相關最佳化Oracle資料庫
- 查詢資料庫物件所屬的filegroup及相關SQL資料庫物件SQL
- 資料庫事物相關問題資料庫
- sqlite 資料庫 相關知識SQLite資料庫
- Sybase資料庫空間相關資料庫
- HAC叢集部署vip及相關操作
- 檢視mysql資料庫連線數、併發數相關資訊MySql資料庫
- 詳解JDBC資料庫連結及相關方法的封裝JDBC資料庫封裝
- 好用的疾病相關單細胞資料庫,及使用方法資料庫
- MS SQL Server 2000 系統資料庫及相關資訊SQLServer資料庫
- 【轉載】Oracle資料庫提高命中率及相關優化Oracle資料庫優化
- 【PG管理】postgresql資料庫管理相關SQL資料庫
- 資料庫相關知識點提要資料庫
- 資料庫中的相關術語資料庫
- Docker容器啟動時初始化Mysql資料庫DockerMySql資料庫
- hive初始化mysql資料庫失敗的原因HiveMySql資料庫
- MySQL資料庫許可權體系入門(6)---管理表、列及程式相關許可權MySql資料庫
- activiti6基礎01-如何資料庫操作及相關表資料庫
- MSSQL系列 (一):資料庫的相關操作SQL資料庫
- mint安裝相關資料庫lib資料庫
- Oracle 11g資料庫相關操作Oracle資料庫
- MySQL索引分類及相關概念辨析MySql索引
- MySQL 中的約束及相關操作MySql
- [資料庫] Navicat for MySQL定時備份資料庫及資料恢復資料庫MySql資料恢復
- 資料庫——關係型資料庫MySQL--簡單使用資料庫MySql