linux mysql5.7安裝和配置啟動詳解


自從mysql被oracle公司收購后 centos等默認不能直接通過 yum install mysql. 不過mysql 提供了社區版 這個是開源的。各大雲服務廠商也通過此版本提供高性能的雲數據庫。

1. 配置YUM源

在MySQL官網中下載YUM源rpm安裝包:[http://dev.mysql.com/downloads/repo/yum/]

下載mysql源安裝包
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

安裝mysql源
yum localinstall mysql57-community-release-el7-8.noarch.rpm

檢查mysql源是否安裝成功
yum repolist enabled | grep "mysql.*-community.*"
如果有消息列出

可以修改vim /etc/yum.repos.d/mysql-community.repo源,改變默認安裝的mysql版本。比如要安裝5.6版本,將5.7源的enabled=1改成enabled=0。然后再將5.6源的enabled=0改成enabled=1即可。

2. 安裝mysql公版

yum install mysql-community-server -- yum安裝

mysqld --version --檢查安裝

通過yum形式安裝時 mysql會有個日記文件 記錄操作時候的輸出信息 比如 在第一次安裝時候會給root用戶默認生成個符合標准的密碼
可以在 /var/log/mysqld.log 查看 。這個日記很強大 如果后面你無法啟動mysql 或者忘記密碼 msql出錯都可以優先來這里看看為什么

3. 配置自定義的數據庫目錄 (如果想默認就跳過)

通過yum形式安裝時 mysql 默認安裝 var目錄下 以后想擴充容量可能不方便。可以自己建議數據庫目錄
比如 我想定義 /data/mysql 是數據庫存在的地方

mkdir /data/mysql_mine -- 建立base目錄

mkdir /data/mysql_mine/data -- 建立數據目錄

chown -R mysql:mysql /data/mysql --文件夾屬於mysql用戶 yum已經幫你添加了

mysql5.7和之前版本不同,很多資料上都是這個命令:mysql_install_db --參數 當然也可以用 但現在 mysql推薦使用
mysqld --initialize --參數 命令 其實也是套了個殼

mysqld --initialize --user=mysql --basedir=/data/mysql_mine --datadir==/data/mysql_mine/data

--user 啟動mysql的用戶

--basedir mysql安裝目錄

--datadir mysql數據倉庫目錄

可能會再次初始化此 因為第一次是yum幫你初始化的 。第二此是手動 獲得的信息可以在logs查看 主要是那個密碼 不去記也沒事 可以強制修改自己要的

vim /etc/my.cnf -- 修改mysql配置

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
[mysql] 

default-character-set=utf8 
[mysqld]

#設置utf8編碼
character-set-server = utf8
collation-server = utf8_general_ci
skip-character-set-client-handshake

#MYSQL設置不區分大小寫
lower_case_table_names=1  
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M

#設置數據目錄 連接的socket
datadir=/data/mysql_mine/data
socket=/data/mysql_mine/mysql.sock


#skip-grant-tables
validate_password_length=6
validate_password_policy=0
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-error=/data/mysql_mine/logs/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[mysql]
socket=/data/mysql_mine/mysql.sock  

大致說下 [mysqld]下的是mysqld的配置 [mysql]是mysql的 因為是yum安裝的一些bin share 文件還是老地方引用 。沒有目錄就自己mkdir 記得權限給mysql 。如果想統一指定 可能會導致啟動失敗 可以看log找百度解決 自行傳送門

如果你不知道你的root的密碼是什么 請打開 skip-grant-tables的注釋,跳過密碼驗證 免密碼登錄。

3. 開啟mysql

systemctl start mysqld

systemctl status mysqld --檢查狀態 出錯請看日記

mysql -uroot -p 或者 mysql 免密碼

第一次登陸 可能遇到 You must reset your password using ALTER USER statement before executing this statement. 的錯誤 意思是讓你修改次密碼

alter user user() identified by "123456"; -- 修改root為123456

show Database --顯示所有數據庫

4. 修改賬戶信息(如果想默認就跳過)

update user set authentication_string=password('123456') where user='root' and host='localhost'; --設置localhost的root密碼為123456

**特別提醒注意的一點是,新版的mysql數據庫下的user表中已經沒有Password字段了而是將加密后的用戶密碼存儲於authentication_string字段 **

flush privileges; --刷新特權

SELECT HOST,USER,authentication_string FROM USER; -- 查詢當前有哪些賬戶

開通對外賬號 方便sql可視化工具遠程登錄
GRANT ALL ON *.* TO admin@'%' identified by '123456' WITH GRANT OPTION;-- 授權給admin賬戶所有權限也附上授權其他賬戶功能
admin賬戶會自動創建 。當然你也可以給root用戶這么做。
%代表任意ip WITH GRANT OPTION 代表授權功能

FLUSH PRIVILEGES; -- 刷新特權

SELECT HOST,USER,authentication_string FROM USER; -- 再次查詢

發現你剛新加的賬戶說明成功! 如果有失敗請參考 傳送門

如果增加密碼強度規則
show variables like 'validate_password%'; -- 檢查密碼驗證配置
如果有列表說明你安裝了 沒的話也沒事 安裝 驗證密碼 插件
install plugin validate_password soname 'validate_password.so'; --安裝插件
show variables like 'validate_password%'; -- 檢查密碼驗證配置

+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | MEDIUM |
| validate_password_special_char_count | 1 |
+--------------------------------------+--------+
6 rows in set (0.00 sec)

有以上信息說明可以配置 也可以通過 SHOW PLUGINS 查看是否安裝

變量 說明
validate_password_dictionary_file 密碼字典文件,一個密碼一行,不區別大小寫。在其中的密碼被拒絕。
validate_password_length 密碼長度
validate_password_policy 密碼策略:0 or LOW(只驗證長度),MEDIUM (除字典都要 這是默認),STRONG (字典也要)
validate_password_number_count 數字的個數
validate_password_mixed_case_count 是否大小寫混合
validate_password_special_char_count 特殊字符的個數

我在上述的my.cnf中使用簡單配置 12346就可以通過 方便開發 實際當中按需定義 。

exit --退出

接下來你可以使用你本地root或者遠程admin賬戶操作數據庫 注意開通防火牆3306

5. 開機自動啟動

systemctl enable mysqld

systemctl daemon-reload

結論 自行安裝會碰很多坑 特別5.7比5.6 yum安裝確實幫我們省事了不少 比如systemctl 命令可以多加利用 在基礎上修改
啟動不了就多看日記 多百度查 順便介紹下 mysql可視化工具 win的SQLyog mac的sequel 。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM