centos8上安裝mysql8


一,下載並解壓mysql8

1,mysql官網

https://www.mysql.com/

 

2,下載到source目錄

[root@yjweb source]# wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.19-linux-glibc2.12-x86_64.tar

 

3,解壓:

[root@yjweb source]# tar -xvf mysql-8.0.19-linux-glibc2.12-x86_64.tar
mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz
mysql-test-8.0.19-linux-glibc2.12-x86_64.tar.xz
mysql-router-8.0.19-linux-glibc2.12-x86_64.tar.xz
[root@yjweb source]# xz
-d mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz xz: mysql-8.0.19-linux-glibc2.12-x86_64.tar: File exists
[root@yjweb source]#
mv mysql-8.0.19-linux-glibc2.12-x86_64.tar mysql-8.0.19-linux-glibc2.12-x86_64.orig.tar [root@yjweb source]# xz -d mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz [root@yjweb source]# tar -xvf mysql-8.0.19-linux-glibc2.12-x86_64.tar

 

說明: 可以看到第一次用xz -d 解壓時,因為解壓出的文件與我們一開始下載的壓縮包文件同名,會報錯:File exists

         所以用mv命令把原始文件改名,從.tar改名為   .orig.tar

         看來mysql官方在打包時沒想到這個問題

 

說明:劉宏締的架構森林是一個專注架構的博客,地址:https://www.cnblogs.com/architectforest

         對應的源碼可以訪問這里獲取: https://github.com/liuhongdi/

 說明:作者:劉宏締 郵箱: 371125307@qq.com

 

二,移動mysql8到目標位置

[root@yjweb source]# mv mysql-8.0.19-linux-glibc2.12-x86_64 /usr/local/soft/mysql

 

三,創建mysql用戶組和用戶,用於運行mysql

[root@yjweb source]# groupadd mysql
[root@yjweb source]# useradd -g mysql -s /sbin/nologin -M mysql

 

說明:

-M, --no-create-home
           Do no create the user's home directory, even if the system wide setting from /etc/login.defs (CREATE_HOME) is set to yes.

這個參數的含義是:不創建新用戶的home目錄

 

說明:在linux下如果想找需要使用的參數,隨時用man

[root@yjweb source]# man useradd

 

四,創建mysql的data等目錄,用於存放數據等

[root@yjweb source]# mkdir /data/mysql
[root@yjweb source]# mkdir /data/mysql/data
[root@yjweb source]# chown mysql.mysql /data/mysql/data
[root@yjweb ~]# cd /data/mysql
[root@yjweb mysql]# mkdir log
[root@yjweb mysql]# chown mysql.mysql log
[root@yjweb mysql]# mkdir binlog
[root@yjweb mysql]# chown mysql.mysql binlog
[root@yjweb mysql]# mkdir var
[root@yjweb mysql]# chown mysql.mysql var
[root@yjweb mysql]# mkdir tmp
[root@yjweb mysql]# chown mysql.mysql tmp

對/data/mysql下面五個目錄的說明:

data    存放mysql的數據

log      存放mysql的錯誤日志和慢查詢日志

binglog  存放mysql的二進制日志

var       存放mysql的sock 和 pid

tmp     mysql使用的臨時目錄

 

五,初始化數據庫:

1,執行命令

[root@yjweb source]# /usr/local/soft/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/soft/mysql/ --datadir=/data/mysql/data/
2020-03-05T08:51:16.019096Z 0 [System] [MY-013169] [Server] /usr/local/soft/mysql/bin/mysqld (mysqld 8.0.19) initializing of server in progress as process 31730
2020-03-05T08:51:18.107879Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Tz8OPgiskv#C

 

注意:返回信息中那個給root的臨時密碼,保存好,接下來要用

 

2,查看我們指定的數據目錄,看是否已有數據寫入:

[sysop@yjweb ~]$ ls /data/mysql/data/

 

六,編輯mysql的配置文件

[root@yjweb source]# vi /etc/my.cnf

內容:

[client]
port = 3306
socket = /data/mysql/var/mysql.sock

[mysqld]

server-id = 1
skip_name_resolve = 1
basedir=/usr/local/soft/mysql
port = 3306

datadir=/data/mysql/data
socket=/data/mysql/var/mysql.sock
log-bin = /data/mysql/binlog/mysql-bin
pid-file=/data/mysql/var/mysqld.pid
user=mysql

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
init_connect='SET NAMES utf8mb4'
max_connections = 400
max_allowed_packet = 128M

interactive_timeout = 1800
wait_timeout = 1800

tmp_table_size = 134217728
max_heap_table_size = 134217728

default_authentication_plugin=mysql_native_password
innodb-file-per-table          = 1

log-queries-not-using-indexes  = 1 slow-query-log = 1 slow-query-log-file = /data/mysql/log/mysql-slow.log long_query_time = 1
[mysqld_safe] 
log
-error=/data/mysql/log/mysqld.log

 

七,從命令行臨時啟動mysql

[root@yjweb source]# /usr/local/soft/mysql/bin/mysqld_safe
2020-03-05T09:15:19.193649Z mysqld_safe error: log-error set to '/data/mysql/log/mysqld.log', however file don't exists. Create writable for user 'mysql'.
[root@yjweb source]# touch /data/mysql/log/mysqld.log
[root@yjweb source]# chown mysql.mysql /data/mysql/log/mysqld.log
[root@yjweb source]# /usr/local/soft/mysql/bin/mysqld_safe

 

說明:把啟動時提示找不到的錯誤日志文件創建上,

          再次啟動即可

 

說明:這樣啟動后會占用一個控制台,另開一個控制台訪問即可

         操作完成后把進程kill掉

      例:

 [root@os3-383-24630 ~]# cat /data/mysql/var/mysqld.pid | xargs kill

 

說明:后面我們會配置mysql做為daemon啟動的啟動文件

 

八,從客戶端登錄進去修改密碼

[root@yjweb mysql]# /usr/local/soft/mysql/bin/mysql -u root -p
Enter password:

 

說明:輸入我們初始化數據庫時系統給出的那個臨時密碼

mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'rootdemopass';
Query OK, 0 rows affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)

 

說明:我們第一次登錄后命令不能執行,mysql提示我們要先修改密碼

         修改密碼后命令可以執行

說明:這個密碼僅供演示使用,大家應該設計一個安全不易被窮舉的密碼

 

九,編輯一個mysql的啟動文件

[root@yjweb var]# vi /usr/local/soft/mysql/support-files/mysql.server

 

根據我們上面所做的操作,配置以下兩行內容

basedir=/usr/local/soft/mysql
datadir=/data/mysql/data

 

測試用啟動文件來啟動mysql服務

[root@yjweb var]# chmod 740 /usr/local/soft/mysql/support-files/mysql.server
[root@yjweb var]# /usr/local/soft/mysql/support-files/mysql.server start
Starting MySQL                                             [  OK  ] 

 

十,如何查看已安裝的mysql的版本?

1,查看mysql客戶端的版本

[root@yjweb mysql]# /usr/local/soft/mysql/bin/mysql -V
/usr/local/soft/mysql/bin/mysql  Ver 8.0.19 for linux-glibc2.12 on x86_64 (MySQL Community Server - GPL)

 

2,查看mysql服務端的版本

[root@yjweb mysql]# /usr/local/soft/mysql/bin/mysqld -V
/usr/local/soft/mysql/bin/mysqld  Ver 8.0.19 for linux-glibc2.12 on x86_64 (MySQL Community Server - GPL)

 

十一,使用systemctl 管理mysql服務

1,生成service文件

[root@yjweb ~]# vim /usr/lib/systemd/system/mysqld.service

 

內容:

[Unit]

Description=MySQL Server
After=network.target
After=syslog.target

[Service]

User=mysql
Group=mysql
Type=forking

PermissionsStartOnly=true

ExecStart= /usr/local/soft/mysql/support-files/mysql.server start
ExecStop= /usr/local/soft/mysql/support-files/mysql.server stop
ExecReload= /usr/local/soft/mysql/support-files/mysql.server restart

LimitNOFILE = 5000
[Install]
WantedBy=multi-user.target

 

2,測試運行情況:

[root@yjweb ~]# systemctl daemon-reload
[root@yjweb ~]# systemctl start mysqld
[root@yjweb ~]# systemctl stop mysqld

 

說明:如果service文件有新增或修改,需要做一次daemon-reload

 

十二,新建dbweb賬號,使可以從127.0.0.1訪問

說明:生產環境中,更多的是從其他服務器上到數據庫服務器的訪問,是基於ip地址的訪問:

mysql> create user 'dbweb'@'127.0.0.1' identified by 'webdemopass';

Query OK, 0 rows affected (0.00 sec)

 

mysql> grant select,insert,update,delete on demobase.* to dbweb@127.0.0.1;

Query OK, 0 rows affected (0.00 sec)

 

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

 

十三,mysql sever在生產環境中的賬號配置

原則上應該為每個站創建一個獨立的賬號:

例如:dbweb  這個賬號: 是用來供前台使用

         dbadm  這個賬號: 用來供后台使用

         dbapi    這個賬號: 用來供接口站使用

 

這個做法的作用: 不使用統一的賬號,便於權限的分配

        可以實現權限的隔離,更安全,

        在遇到問題時也更容易排查

 

 

說明:mysql的一個安全管理原則:

        權限分配時,不要隨便就分配all privileges權限,

         基本上除管理員之外沒有賬號需要這么高的權限,

         select,insert,update,delete在生產環境中已經足夠了

 

十四,查看本地centos的版本

[webop@yjweb ~]$ cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core) 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM