MySQL 安裝教程
注意事項
- 文檔的cmd命令不要複製,可能會出錯,是富文本編輯器的空格造成。
- 使用jdk11需更新MySQL8.0.16以上(包含)
- MySQL 修復 jdk 11 bug 參考: 鏈接
MySQL 8 之前版本參考
windows 10 安裝
1.下載
https://dev.mysql.com/downloads/mysql/
2.卸載之前的MySQL
以管理員身份運行cmd 執行
- 數據庫複製備份參考官方: 鏈接
- net stop mysql 停止服務
- mysqld --remove mysql 刪除服務
- 刪除例如D:\Program Files\MySQL的目錄
- 這就是壓縮包安裝的好用,可執行文件卸載出錯可能還需要重裝系統
3.安裝
- 將 mysql-8.0.20-winx64.zip 解壓到D:\Program Files
- 將解壓之後的目錄mysql-8.0.20重命名爲MySQL
- 在MySQL目錄下新建my.ini配置文件,打開添加以下內容
- 注: utf8mb4是utf-8的升級支持emoji庫的存儲及表情,請勿使用utf8 linux下出錯 win10下警告。
[mysqld]
# 設置3306端口
port=3306
# 設置mysql的安裝目錄
basedir=D:\Program Files\MySQL
# 設置mysql數據庫的數據的存放目錄
datadir=D:\Program Files\MySQL\data
# 允許最大連接數
max_connections=2000
# 允許連接失敗的次數。這是爲了防止有人從該主機試圖攻擊數據庫系統
max_connect_errors=10
# 服務端使用的字符集
character-set-server=utf8mb4
# 創建新表時將使用的默認存儲引擎
default-storage-engine=INNODB
# 默認使用“mysql_native_password”插件認證
default_authentication_plugin=mysql_native_password
#超時設置
wait_timeout=2147483
interactive_timeout=2147483
#設置默認時區
default-time_zone ='+8:00'
[mysql]
# 設置mysql客戶端默認字符集
default-character-set=utf8mb4
[client]
# 設置mysql客戶端連接服務端時默認使用的端口
port=3306
default-character-set=utf8mb4
3.配置環境變量
將D:\Program Files\MySQL\bin 添加到環境變量path中
4.安裝服務
- 以管理員身份運行cmd否則會失敗
- 執行mysqld --initialize --console
- error: Found option without preceding group in config file
- 原因是my.ini 文件可能是UTF-8編碼,打開記事本選擇另存爲選擇編碼ANSI
- 執行成功會顯示臨時密碼,root@localhost: IuWlms_/B0Kp
- IuWlms_/B0Kp 爲臨時密碼
- 安裝服務mysqld --install
- 啓動服務net start mysql
- 登錄 mysql -u root -p 回車輸入密碼
- IuWlms_/B0Kp
- 修改密碼
- alter user 'root'@'localhost' IDENTIFIED BY '密碼';
- 注意:密碼不能爲root,win10 MySQL 版本無強制密碼策略(密碼策略參考CentOS安裝)
5.配置訪問權限(允許其它主機訪問)
需先登錄
- Use mysql
- Update user set host=’%’ where user=’root’;
- Select host,user from user;
- Flush privileges;
注意:以後的修改密碼變成
- alter user 'root'@'%' IDENTIFIED BY '密碼';
CentOS 8 安裝
1.下載
https://dev.mysql.com/downloads/mysql/
2.上傳
- 解壓 mysql-8.0.20-1.el8.x86_64.rpm-bundle.tar,以下4個文件必須安裝
- 使用Xftp上傳到CentOS 的 例如: /opt/packages目錄下
- mkdir /opt/packages 創建目錄
3.安裝
- cd /opt/packages/ 執行以下命令進行安裝
- rpm -ivh mysql-community-common-8.0.20-1.el8.x86_64.rpm --nodeps
- rpm -ivh mysql-community-libs-8.0.20-1.el8.x86_64.rpm --nodeps
- rpm -ivh mysql-community-client-8.0.20-1.el8.x86_64.rpm --nodeps
- rpm -ivh mysql-community-server-8.0.20-1.el8.x86_64.rpm --nodeps
4.編輯配置文件
- 編輯my.cnf
- vi /etc/my.cnf
- 按i在當前行編輯
- 注:utf8mb4 是utf-8的升級支持emoji庫的存儲及表情,請勿使用utf8 centos下出錯 win10下警告
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html
[mysqld]
#
# 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 the leading "# " to disable binary logging
# Binary logging captures changes between backups and is enabled by
# default. It's default setting is log_bin=binlog
# disable_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
#
# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
#端口
port=3306
#mysql默認的安裝路徑
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# 允許最大連接數
max_connections=2000
# 允許連接失敗的次數。這是爲了防止有人從該主機試圖攻擊數據庫系統
max_connect_errors=10
# 服務端使用的字符集
character-set-server=utf8mb4
# 創建新表時將使用的默認存儲引擎
default-storage-engine=INNODB
# 默認使用“mysql_native_password”插件認證
default_authentication_plugin=mysql_native_password
#超時設置
wait_timeout=2147483
interactive_timeout=2147483
#設置默認時區
default-time_zone ='+8:00'
#日誌輸出文件
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysql]
default-character-set=utf8mb4
[client]
port=3306
default-character-set=utf8mb4
- 按ESC鍵輸入:wq 退出並退出
5.啓動服務
- 啓動服務:systemctl start mysqld
- 警告: 不建議使用 service mysqld restart 會重定向到 systemctl start mysqld
- 查看服務狀態:systemctl status mysqld
- 查看臨時密碼:grep 'password' /var/log/mysqld.log | head -n 1
6.登錄
- mysql -u root -p
- 注意:在p後面不要跟密碼,8版本會登錄失敗,回車再輸入密碼
- 注意:mysql連接失敗也可能是 default_authentication_plugin=mysql_native_password 沒有配置,參考 4.編輯配置文件
7.修改密碼策略
- 注意:只有Linux版本mysql有強制密碼策略
- mysql 8 和mysql7密碼策略區別
- mysql8 例如密碼長度:set global validate_password.length=6;
- mysql7 例如密碼長度:set global validate_password_length=6;
- 查看密碼策略 : show variables like 'validate_password%';
- 注意:必須修改密碼才能查看密碼策略
- 可修改的密碼策略
密碼驗證策略低要求
set global validate_password.policy=LOW;(0或LOW代表低級)
密碼至少要包含的小寫字母個數和大寫字母個數
set global validate_password.mixed_case_count=0;
密碼至少要包含的數字個數。
set global validate_password.number_count=0;
密碼至少要包含的特殊字符數
set global validate_password.special_char_count=0;
密碼長度
set global validate_password.length=6;
8.修改密碼
- 修改過密碼策略就可以使用簡單的密碼了
- alter user 'root'@'localhost' IDENTIFIED BY '密碼';
- 注意:密碼不能使用root
9.修改mysql訪問權限
- 登錄之後
- Use mysql
- update user set host='%' where user ='root';
- select host,user from user;
- Flush privileges;
10.CentOS 8 防護牆命令
- sudo firewall-cmd --zone=public --add-service=http --permanent #添加開放的服務
- sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent #添加開放的端口
- firewall-cmd --zone= public --query-port=80/tcp #查看是否開放
- firewall-cmd --zone= public --remove-port=80/tcp --permanent # 刪除
- firewall-cmd --reload # 重新載入,更新防火牆規則
描述:
- --zone=public #作用域
- --add-port=3306/tcp #添加端口,格式爲:端口/通訊協議
- --permanent #永久生效,沒有此參數重啓後失效
11.防火牆開放MySQL端口
- 爲了安全起見開放端口即可,防火牆不需要關閉
- sudo firewall-cmd --list-all ( 查看開放端口)
- sudo firewall-cmd --zone=public --add-service=http --permanent
- sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
- firewall-cmd --reload
12.開啓服務
- systemctl enable mysqld