Linux下Mysql升级到8.0

声明:/usr/local/mysql目录是它的默认安装目录,统一放在这会方便很多,但我就是犯贱啊

1.检查系统版本:
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已经卸载干净了

检查一下系统是否存在mariadb数据库,如果有,一定要卸载掉,否则可能与 mysql 产生冲突。
  系统安装模式的是最小安装,所以没有这个数据库。
  检查是否安装了 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 系统的虚拟内存大小,如果内存不足 1G(如果是虚拟机就是你建立虚拟机时候分配的内存),启动 mysql 的时候可能会产生下面这个错误提示: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]

  • 检查内存大小
    cat /proc/meminfo | grep MemTotal
    提示:1千兆字节(gb)=1048576千字节(kb)
[root@VM_0_3_centos mysql]# cat /proc/meminfo | grep MemTotal
MemTotal:        1882884 kB #1.79G
  • 找到以前的数据库目录并删除(根据个人了)


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


    rm -rf mysql.log

3.重新安装
创建文件夹(用于安装的位置)

  • 创建文件夹/var/lib/mysql并进入
[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
  • 将文件解压到当前目录
    .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
  • 添加系统用户
    添加 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

补充:查看是否存在 mysql 组:
[root@localhost ~]# more /etc/group | grep mysql
查看 msyql 属于哪个组:[root@localhost ~]# groups mysql
查看当前活跃的用户列表:[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下创建my.cnf文件并加入下面内容
    vim /etc/my.cnf
[mysqld]
#从Mysql8.0开始,默认值的字符集为utf8mb4,不再是latin1。
#character-set-server = utf8
#collation-server = utf8_unicode_ci
ft_min_word_len = 1
# 设置mysql的安装目录 
basedir=/var/lib/mysql
# 设置mysql数据库的数据的存放目录 
datadir=/var/lib/mysql/data
socket=/var/lib/mysql/mysql.sock
# 创建新表时将使用的默认存储引擎 
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下创建文件夹data用来存放数据库的数据
[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执行命令)
    ./bin/mysqld --initialize --user=mysql --basedir=/var/lib/mysql/ --datadir=/var/lib/mysql/data/
    后面basedir和datadir参数其实可以不要,因为我们已经在my.cnf中定义了
    记住初始密码

配置 mysql

  • 环境变量配置
    将mysql的bin目录加入PATH环境变量,编辑 /etc/profile文件:
    [root@localhost mysql]# vim /etc/profile
#mysql
export MYSQL_HOME=/var/lib/mysql/bin
export PATH=$PATH:$MYSQL_HOME

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

  • 设置开机启动和服务启动

1.复制启动脚本到资源目录:(在/var/lib/mysql目录下执行)
[root@localhost mysql]# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld

  1. 增加 mysqld 服务控制脚本执行权限
    [root@localhost mysql]# chmod +x /etc/rc.d/init.d/mysqld
  2. 将 mysqld 服务加入到系统服务
    [root@localhost mysql]# chkconfig --add mysqld
  3. 检查mysqld服务是否已经生效
    [root@localhost mysql]# chkconfig --list mysqld
     命令输出类似下面的结果:
            mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
     表明mysqld服务已经生效,在2、3、4、5运行级别随系统启动而自动启动

以后可以使用 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> 

  • 修改密码 进去第一件事就是修改密码
    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)

可以看到默认
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)
查看默认字符集

出现的错误
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容