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
把下面內容複製進去,檔案來自https://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=http://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