Centos 7 MYSQL5.7 安裝與卸載
一、卸載已安裝的MySql
1.1 rpm查看安裝
rpm -qa | grep -i mysql
1.2 rpm 卸載
清除上述查找出來的MySQL
rpm -e mysql57-community-release-el7-9.noarch
rpm -e mysql-community-server-5.7.17-1.el7.x86_64
rpm -e mysql-community-libs-5.7.17-1.el7.x86_64
rpm -e mysql-community-libs-compat-5.7.17-1.el7.x86_64
rpm -e mysql-community-common-5.7.17-1.el7.x86_64
rpm -e mysql-community-client-5.7.17-1.el7.x86_64
cd /var/lib/
rm -rf mysql/
1.3 清除餘項
刪除mysql的所有配置
rm –rf /usr/my.cnf
rm -rf /root/.mysql_sercret
剩餘配置檢查
chkconfig --list | grep -i mysql
chkconfig --del mysqld
根據上面的列表,刪除 ,如:mysqld
二、安裝MySql
2.1 下載yum源
現在centos上默認是沒有yum源的,yum安裝的是 MariaDB,所以我們需要自己先配置yum源。
wget 'https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm'
2.2 安裝yum源
rpm -Uvh mysql57-community-release-el7-11.noarch.rpm
2.3 安裝MySql
yum install -y mysql-community-server
2.4 啓動mysql
mysql 基礎配置說明(vim /etc/my.cnf)
character-set-server=utf8
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
# 設置時區爲東八區
default-time_zone = +8:00
# 密碼策略
validate_password_policy=0
validate_password_length=1
# 不區分大小寫
lower_case_table_names=1
# 慢查詢
slow_query_log=on
long_query_time=3
slow_query_log_file=/var/lib/mysql/VM_0_12_centos-slow.log
log_queries_not_using_indexes=on
# 緩存
query_cache_type=on
query_cache_size=102400
在centos7中,沒有了service命令,都是使用systemctl命令。
systemctl start mysqld
查看狀態
systemctl status mysqld
2.5 登錄數據庫,修改數據庫密碼
mysql5.7的新特性之一就是在初始化的時候會生成一個自定義的密碼,然後你需要找到這個密碼,登錄的時候輸入。注意,輸入密碼的時候是不顯示。
倘若沒有/var/log/mysqld.log,可以先刪除原來安裝過的mysql殘留的數據
rm -rf /var/lib/mysql
再啓動mysql
systemctl start mysqld #啓動MySQL
找到密碼: 紅框的地方就是密碼:
grep 'temporary password' /var/log/mysqld.log
登錄數據庫:這裏-p之後不用輸入密碼,回車後再輸入。改過密碼之後登錄則是直接在-p後加密碼了。
注意,修改的密碼太簡單會不給修改,把大小寫字母和數字加上就肯定可以了。如果不想設置那麼複雜密碼,可以修改規則:
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;
修改密碼:
SET PASSWORD = PASSWORD('123456');
設置遠程可以登錄(建議root不要授權遠程訪問,請創建新mysql用戶)
現在這樣是無法在本地用工具登錄訪問的,現在要做兩件事,一件事是將雲服務器上的3306端口開放;另一件事是配置遠程可以訪問。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
flush privileges;
先設置剛纔的密碼可以遠程登錄,然後使用flush命令使配置立即生效,如果還不行可以嘗試重啓一下數據庫。
其他方案:
#vim /etc/my.cnf(注:windows下修改的是my.ini)
在文檔內搜索mysqld定位到[mysqld]文本段,在[mysqld]後面任意一行添加“skip-grant-tables”用來跳過密碼驗證的過程(修改完成後將此行註釋掉)。
2.6 修改一些簡單的配置
yum安裝的MySql配置文件默認在/etc文件夾下:
vim /etc/my.cnf
在[mysqld]下面添加,不需要分號
字符集:注意是utf8而不是utf-8!
character-set-server=utf8
這時候使用show variables like 'char%';就可以查看到字符集都是utf8了
sql支持group by語句
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
設置時區爲東八區
default-time_zone = '+8:00'
最後重啓數據庫,使配置生效。
systemctl restart mysqld
其他配置
# 不區分大小寫
lower_case_table_names=1
#慢查詢
slow_query_log=on
long_query_time=3
slow_query_log_file=/var/lib/mysql/VM_0_12_centos-slow.log
log_queries_not_using_indexes=on
# 緩存
query_cache_type=on
query_cache_size=102400
慢查詢基本配置
- slow_query_log 啓動停止技術慢查詢日誌
- slow_query_log_file 指定慢查詢日誌得存儲路徑及文件(默認和數據文件放一起)
- long_query_time 指定記錄慢查詢日誌SQL執行時間得伐值(單位:秒,默認10秒)
- log_queries_not_using_indexes 是否記錄未使用索引的SQL
- log_output 日誌存放的地方【TABLE】【FILE】【FILE,TABLE】
慢查詢分析
慢查詢的日誌記錄非常多,要從裏面找尋一條查詢慢的日誌並不是很容易的事情,一般來說都需要一些工具輔助才能快速定位到需要優化的SQL語句,下面介紹兩個慢查詢輔助工具
Mysqldumpslow(pt_query_digest)
常用的慢查詢日誌分析工具,彙總除查詢條件外其他完全相同的SQL,並將分析結果按照參數中所指定的順序輸出。
語法:
mysqldumpslow -s r -t 10 slow-mysql.log
-s order (c,t,l,r,at,al,ar)
c:總次數
t:總時間
l:鎖的時間
r:總數據行
at,al,ar :t,l,r平均數 【例如:at = 總時間/總次數】
-t top 指定取前面幾天作爲結果輸出
mysqldumpslow -s r -t 10 /var/lib/mysql/VM_0_12_centos-slow.log
用戶權限
創建一個普通用戶並授權
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
授權: grant all on *.* to oyc@'%' identified by '123456';
上面,all表示所有的權限(如讀、寫、查詢、刪除等操作);
.有兩個*,前面的*表示所有的數據庫,後面的*表示所有的表;
identified by後面跟密碼,用單引號括起來,這裏user1指的是localhost上的user1。
給網絡上其他機器上的某用戶授權:
grant all on oyc1.* to 'oyc1'@'192.168.33.128' identified by '111222';
上面,用戶和主機的IP都用單引號括起來,兩者之間有@符號,IP可以用%代替,表示所有主機。
查看 MySQL 用戶權限
查看當前用戶(自己)權限:
show grants;
查看其他 MySQL 用戶權限:
show grants for oyc@localhost;
撤銷已經賦予給 MySQL 用戶權限的權限。
revoke 跟 grant 的語法差不多,只需要把關鍵字 “to” 換成 “from” 即可:
grant all ON oyc1.* to 'oyc1'@'%';
revoke all on oyc1.* from 'oyc1'@'%';
Mysql安裝位置
character_sets_dir : /usr/share/mysql/charsets/
2.7 設置開機啓動
systemctl enable mysqld
systemctl daemon-reload