伺服器安裝部署-01-MySQL
1 MySQL
1.1 安裝
在root用戶許可權下
# 創建mysql用戶和用戶組,同時禁止登陸
shell> groupadd mysql
shell> useradd -r -g mysql -s /bin/false mysql
# tar解壓mysql壓縮包,同時把他移到你向安裝的位置
shell> tar -xvf mysql.tar.xz
shell> tar -zxvf mysql.tar.gz
shell> mv [mysql文件夾] [目的地]
shell> cd [目的地]
# 在當前文件夾下創建數據文件夾和日誌文件夾 PS.這是我個人的習慣
shell> mkdir data
shell> mkdir log
# 更改當前文件夾下的用戶
shell> chown -R mysql ./
shell> chgrp -R mysql ./
# 初始化mysql,這裡會生成一個隨機密碼,可以記下來。如果忘記了,那就只能再來一次。
# 如果不想有隨機密碼生成,用這個選項 --initialize-insecure,不過這個選項不會在第一次登陸的時候提示你去改密碼
shell> ./bin/mysql --initialize --user=mysql --basedir=[mysql目錄] --datadir[data目錄]
# 檢查是否安裝成功,進行啟動驗證
shell> ./support-files/mysql.server start
# 啟動之後,登陸mysql,然後修改root密碼
shell> ./bin/mysql -uroot -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '新密碼';
# 允許root賬戶遠程登陸
mysql> use mysql;
mysql> update user set host='%' where user='root';
1.2 錯誤排查
遇到錯誤不要怕,先看看日誌怎麼說
1)找不到日誌/日誌文件夾為空
解決
檢查my.cnf
文件中的 log-error
配置,看看這裡配置的文件夾和文件是不是不存在。如果存在的話檢查許可權
原因
mysql運行使用的用戶是mysql,這個用戶沒有許可權創建文件和文件夾
2)can『t connect local mysql server through socket ‘/xxx/xxx/mysql.sock’
這錯誤一般在連接的時候出現
解決方案
檢查 my.cnf
中 client
條目下關於socket
的配置,如果文件夾不存在的話就給他創建好,然後改變用戶和用戶組。
萬能方案:都丟到mysql目錄下
3)couldn’t create xxx file [目錄]
這個錯誤一般在初始化mysql的時候出現
解決方案
檢查目錄是否存在以及目錄所屬用戶和用戶組
4)不能通過systemctl管理mysql
解決方案
shell> cd /usr/lib/systemd/system
# 文件名隨你定,但是要用「.service」結尾
shell> touch mysqld.service
shell> chmod 644 mysqld.service
把下面內容複製進去,文件來自//dev.mysql.com/doc/mysql-secure-deployment-guide/8.0/en/secure-deployment-post-install.html
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=//dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
# Have mysqld write its state to the systemd notify socket
Type=notify
# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0
# Start main service
# 這裡要記得改成你的mysqld的路徑
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf $MYSQLD_OPTS
# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql
# Sets open_files_limit
LimitNOFILE = 10000
Restart=on-failure
RestartPreventExitStatus=1
# Set environment variable MYSQLD_PARENT_PID. This is required for restart.
Environment=MYSQLD_PARENT_PID=1
PrivateTmp=false