在root用戶權限下html
# 建立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';
遇到錯誤不要怕,先看看日誌怎麼說mysql
解決sql
檢查my.cnf
文件中的 log-error
配置,看看這裏配置的文件夾和文件是否是不存在。若是存在的話檢查權限shell
緣由socket
mysql運行使用的用戶是mysql,這個用戶沒有權限建立文件和文件夾ide
這錯誤通常在鏈接的時候出現post
解決方案ui
檢查 my.cnf
中 client
條目下關於socket
的配置,若是文件夾不存在的話就給他建立好,而後改變用戶和用戶組。this
萬能方案:都丟到mysql目錄下rest
這個錯誤通常在初始化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