Linux下Mysql升級到8.0

聲明:/usr/local/mysql目錄是它的默認(rèn)安裝目錄,統(tǒng)一放在這會方便很多,但我就是犯賤啊

1.檢查系統(tǒng)版本:
cat /etc/system-release

[root@VM_0_3_centos ~]#  cat /etc/system-release
CentOS Linux release 7.5.1804 (Core) 

uname -a64位還是32位

[root@VM_0_3_centos mysql]# uname -a
... x86_64 GNU/Linux

2.檢查是否安裝了 mysql
rpm -qa mysql*rpm檢查

[root@VM_0_3_centos ~]# rpm -qa mysql*
mysql-community-common-5.6.40-2.el7.x86_64
mysql-community-client-5.6.40-2.el7.x86_64
mysql-community-server-5.6.40-2.el7.x86_64
mysql-community-release-el7-5.noarch
mysql-community-libs-5.6.40-2.el7.x86_64

yum list mysql* yum檢查

[root@VM_0_3_centos ~]# yum list mysql*
Loaded plugins: fastestmirror, langpacks
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
Loading mirror speeds from cached hostfile
Installed Packages#已安裝的軟件包
mysql-community-client.x86_64                        5.6.40-2.el7             @mysql56-community        
mysql-community-common.x86_64                        5.6.40-2.el7             @mysql56-community        
mysql-community-libs.x86_64                          5.6.40-2.el7             @mysql56-community        
mysql-community-release.noarch                       el7-5                    installed                 
mysql-community-server.x86_64                        5.6.40-2.el7             @mysql56-community        
Available Packages  #可用的軟件包
MySQL-python.x86_64                                  1.2.5-1.el7              os                        
MySQL-zrm.noarch                                     3.0-17.el7               epel                      
mysql++.x86_64                                       3.1.0-12.el7             epel                      
mysql++-devel.x86_64                                 3.1.0-12.el7             epel                      
mysql++-manuals.x86_64                               3.1.0-12.el7             epel                      
mysql-community-bench.x86_64                         5.6.40-2.el7             mysql56-community         
mysql-community-client.i686                          5.6.40-2.el7             mysql56-community         
mysql-community-common.i686                          5.6.40-2.el7             mysql56-community         
mysql-community-devel.i686                           5.6.40-2.el7             mysql56-community         
mysql-community-devel.x86_64                         5.6.40-2.el7             mysql56-community         
mysql-community-embedded.i686                        5.6.40-2.el7             mysql56-community         
mysql-community-embedded.x86_64                      5.6.40-2.el7             mysql56-community         
mysql-community-embedded-devel.i686                  5.6.40-2.el7             mysql56-community         
mysql-community-embedded-devel.x86_64                5.6.40-2.el7             mysql56-community         
mysql-community-libs.i686                            5.6.40-2.el7             mysql56-community         
mysql-community-test.x86_64                          5.6.40-2.el7             mysql56-community         
mysql-connector-java.noarch                          1:5.1.25-3.el7           os                        
mysql-connector-odbc.x86_64                          8.0.11-1.el7             mysql-connectors-community
mysql-connector-odbc-debuginfo.x86_64                8.0.11-1.el7             mysql-connectors-community
mysql-connector-odbc-setup.x86_64                    8.0.11-1.el7             mysql-connectors-community
mysql-connector-python.noarch                        2.0.4-1.el7              mysql-connectors-community
mysql-connector-python.x86_64                        8.0.11-1.el7             mysql-connectors-community
mysql-connector-python-cext.x86_64                   8.0.11-1.el7             mysql-connectors-community
mysql-connector-python-debuginfo.x86_64              2.1.7-1.el7              mysql-connectors-community
mysql-mmm.noarch                                     2.2.1-15.el7             epel                      
mysql-mmm-agent.noarch                               2.2.1-15.el7             epel                      
mysql-mmm-monitor.noarch                             2.2.1-15.el7             epel                      
mysql-mmm-tools.noarch                               2.2.1-15.el7             epel                      
mysql-proxy.x86_64                                   0.8.5-2.el7              epel                      
mysql-proxy-devel.x86_64                             0.8.5-2.el7              epel                      
mysql-ref-manual-5.6-en-html-chapter.noarch          1-20180227               mysql56-community         
mysql-ref-manual-5.6-en-pdf.noarch                   1-20180227               mysql56-community         
mysql-router.x86_64                                  8.0.11-1.el7             mysql-tools-community     
mysql-router-debuginfo.x86_64                        8.0.11-1.el7             mysql-tools-community     
mysql-shell.x86_64                                   8.0.11-1.el7             mysql-tools-community     
mysql-shell-debuginfo.x86_64                         8.0.11-1.el7             mysql-tools-community     
mysql-utilities.noarch                               1.6.5-1.el7              mysql-tools-community     
mysql-utilities-extra.noarch                         1.5.6-1.el7              mysql-tools-community     
mysql-workbench-community.x86_64                     6.3.10-1.el7             mysql-tools-community     
mysql-workbench-community-debuginfo.x86_64           6.3.10-1.el7             mysql-tools-community     
mysqlreport.noarch                                   3.5-11.el7               epel                      
mysqltuner.noarch                                    1.6.0-1.el7              epel           
  • 已安裝需要卸載干凈
    yum remove mysql*yum卸載

    rpm -e mysql*rpm卸載
[root@VM_0_3_centos ~]# rpm -e mysql*
error: package mysql* is not installed
說明yum已經(jīng)卸載干凈了

檢查一下系統(tǒng)是否存在mariadb數(shù)據(jù)庫,如果有,一定要卸載掉,否則可能與 mysql 產(chǎn)生沖突。
  系統(tǒng)安裝模式的是最小安裝,所以沒有這個數(shù)據(jù)庫。
  檢查是否安裝了 mariadb:rpm -qa | grep mariadb
  如果有就使勁卸載干凈:
systemctl stop mariadb
rpm -qa | grep mariadb
rpm -e --nodeps mariadb-5.5.52-1.el7.x86_64
rpm -e --nodeps mariadb-server-5.5.52-1.el7.x86_64
rpm -e --nodeps mariadb-libs-5.5.52-1.el7.x86_64

檢查一下 linux 系統(tǒng)的虛擬內(nèi)存大小,如果內(nèi)存不足 1G(如果是虛擬機(jī)就是你建立虛擬機(jī)時候分配的內(nèi)存),啟動 mysql 的時候可能會產(chǎn)生下面這個錯誤提示:Starting mysqld (via systemctl): Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.[FAILED]

  • 檢查內(nèi)存大小
    cat /proc/meminfo | grep MemTotal
    提示:1千兆字節(jié)(gb)=1048576千字節(jié)(kb)
[root@VM_0_3_centos mysql]# cat /proc/meminfo | grep MemTotal
MemTotal:        1882884 kB #1.79G
  • 找到以前的數(shù)據(jù)庫目錄并刪除(根據(jù)個人了)


    rm -rf mysql
  • 找打以前的日志并刪除


    rm -rf mysql.log

3.重新安裝
創(chuàng)建文件夾(用于安裝的位置)

  • 創(chuàng)建文件夾/var/lib/mysql并進(jìn)入
[root@VM_0_3_centos log]# mkdir /var/lib/mysql
[root@VM_0_3_centos log]# cd /var/lib/mysql
我是上傳到/data目錄下的
[root@VM_0_3_centos data]# cd /data
[root@VM_0_3_centos data]# ls
mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz
  • 將文件解壓到當(dāng)前目錄
    .tar.xz解壓是
    tar -xvf mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz
    .tar.gz解壓是
    tar -zvxf mysql-8.0.17-linux-glibc2.12-x86_64.tar.gz
  • 重命名文件夾為mysql;將文件移動到/var/lib目錄下
    重命名命令:mv mysql-8.0.17-linux-glibc2.12-x86_64 mysql
  • 添加系統(tǒng)用戶
    添加 mysql 組和 mysql 用戶:
    添加 mysql 組:[root@localhost ~]# groupadd mysql
    添加 mysql 用戶:[root@localhost ~]# useradd -r -g mysql mysql
    并使mysql是目錄/var/lib/mysql的擁有者chown -R mysql:mysql /var/lib/mysql

補(bǔ)充:查看是否存在 mysql 組:
[root@localhost ~]# more /etc/group | grep mysql
查看 msyql 屬于哪個組:[root@localhost ~]# groups mysql
查看當(dāng)前活躍的用戶列表:[root@localhost ~]# w

  • 檢查是否安裝了 libaio
    [root@localhost pub]# rpm -qa | grep libaio

若沒有則安裝
      版本檢查:[root@localhost pub]# yum search libaio
      安裝:[root@localhost pub]# yum -y install libaio

  • /etc下創(chuàng)建my.cnf文件并加入下面內(nèi)容
    vim /etc/my.cnf
[mysqld]
#從Mysql8.0開始,默認(rèn)值的字符集為utf8mb4,不再是latin1。
#character-set-server = utf8
#collation-server = utf8_unicode_ci
ft_min_word_len = 1
# 設(shè)置mysql的安裝目錄 
basedir=/var/lib/mysql
# 設(shè)置mysql數(shù)據(jù)庫的數(shù)據(jù)的存放目錄 
datadir=/var/lib/mysql/data
socket=/var/lib/mysql/mysql.sock
# 創(chuàng)建新表時將使用的默認(rèn)存儲引擎 
default-storage-engine=INNODB
symbolic-links=0
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[client]
default-character-set=utf8 
socket=/var/lib/mysql/mysql.sock
[mysql]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
  • /var/lib/mysql下創(chuàng)建文件夾data用來存放數(shù)據(jù)庫的數(shù)據(jù)
[root@VM_0_3_centos mysql]# pwd
/var/lib/mysql
[root@VM_0_3_centos mysql]# mkdir data
[root@VM_0_3_centos mysql]# ls
bin  data  docs  include  lib  LICENSE  LICENSE.router  man  README  README.router  run  share  support-files  var
  • 初始化 mysqld (在/var/lib/mysql執(zhí)行命令)
    ./bin/mysqld --initialize --user=mysql --basedir=/var/lib/mysql/ --datadir=/var/lib/mysql/data/
    后面basedir和datadir參數(shù)其實可以不要,因為我們已經(jīng)在my.cnf中定義了
    記住初始密碼

配置 mysql

  • 環(huán)境變量配置
    將mysql的bin目錄加入PATH環(huán)境變量,編輯 /etc/profile文件:
    [root@localhost mysql]# vim /etc/profile
#mysql
export MYSQL_HOME=/var/lib/mysql/bin
export PATH=$PATH:$MYSQL_HOME

然后
執(zhí)行命令使其生效:[root@localhost mysql]# source /etc/profile
用 export 命令查看PATH值:[root@localhost mysql]# echo $PATH

  • 設(shè)置開機(jī)啟動和服務(wù)啟動

1.復(fù)制啟動腳本到資源目錄:(在/var/lib/mysql目錄下執(zhí)行)
[root@localhost mysql]# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld

  1. 增加 mysqld 服務(wù)控制腳本執(zhí)行權(quán)限
    [root@localhost mysql]# chmod +x /etc/rc.d/init.d/mysqld
  2. 將 mysqld 服務(wù)加入到系統(tǒng)服務(wù)
    [root@localhost mysql]# chkconfig --add mysqld
  3. 檢查mysqld服務(wù)是否已經(jīng)生效
    [root@localhost mysql]# chkconfig --list mysqld
     命令輸出類似下面的結(jié)果:
            mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
     表明mysqld服務(wù)已經(jīng)生效,在2、3、4、5運(yùn)行級別隨系統(tǒng)啟動而自動啟動

以后可以使用 service 命令控制 mysql 的啟動和停止。
      查看啟動項:chkconfig --list | grep -i mysql
      刪除啟動項:chkconfig --del mysql

  1. 啟動 mysqld
    [root@localhost mysql]# service mysqld start
[root@VM_0_3_centos mysql]# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@VM_0_3_centos mysql]# chmod +x /etc/rc.d/init.d/mysqld
[root@VM_0_3_centos mysql]# chkconfig --add mysqld
[root@VM_0_3_centos mysql]# chkconfig --list mysqld

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@VM_0_3_centos mysql]# 

登錄 mysql

mysql -uroot -p
上面的密碼

[root@VM_0_3_centos etc]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.17

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

  • 修改密碼 進(jìn)去第一件事就是修改密碼
    alter user 'root'@'localhost' identified by '123456';

瀏覽一下mysql8.0

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.17    |
+-----------+
mysql> select curtime();
+-----------+
| curtime() |
+-----------+
| 12:46:25  |
+-----------+
mysql> use wenda;
Database changed
mysql> create table a(id int,name varchar(20));
Query OK, 0 rows affected (0.05 sec)

mysql> show create table a;
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                         |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------+
| a     | CREATE TABLE `a` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

可以看到默認(rèn)
charset=utfmb4
COLLATE=utf8mb4_0900_ai_ci
mysql> show variables like 'character_set_%';
+--------------------------+--------------------------------+
| Variable_name            | Value                          |
+--------------------------+--------------------------------+
| character_set_client     | utf8                           |
| character_set_connection | utf8                           |
| character_set_database   | utf8mb4                        |
| character_set_filesystem | binary                         |
| character_set_results    | utf8                           |
| character_set_server     | utf8mb4                        |
| character_set_system     | utf8                           |
| character_sets_dir       | /var/lib/mysql/share/charsets/ |
+--------------------------+--------------------------------+
8 rows in set (0.00 sec)
查看默認(rèn)字符集

出現(xiàn)的錯誤
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容