伺服器安裝部署-01-MySQL

PrimaBruceXu發表於2021-03-31

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.cnfclient條目下關於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

相關文章