记录一次Mysql版本更替的处理。系统为 Ubuntu16.04

mysql原本版本为5.7,因业务需要使用mysql8.0版本,所以本想是尝试两版本数据库并行,但是无奈没有尝试成功,并且原本的数据库也搞崩了。没有办法,只好把mysql卸载干净,然后重新安装Mysql8.0.

如果大家有不同版本mysql并行的方法,希望大家指教。

卸载5.7数据库。

5.7版本的数据库不是通过系统命令安装的,是下载的压缩包,解压安装的,故此,卸载的时候,也不能使用系统命令了。而且由于我本地的服务已经崩了,故此采用了暴力删除的方法。

开始卸载:

1.先停止mysql服务。这个看你本地启动mysql的方式了,如果忘了,也可以直接ps -aux |grep mysql.查询出所有Mysql的pid,然后kill掉。

2.使用find命令找出系统中存在的所有Mysql文件。由于我的系统中有python和django的内容,故此使用的命令为:find / -name mysql* |grep -v py |grep -vi django| xargs rm -rf. 各位根据实际情况,对筛选条件进行删除或补充。以免误删文件。

3.操作完之后,在使用find / -name mysql* 命令,确认下是否删除干净。

安装8.0数据库

此次安装8.0版本数据库,我依然选择了使用压缩包的方式。

1.从mysql官网下载压缩包。https://dev.mysql.com/downloads/mysql/我选择的是linux通用版,mysql-8.0.22-linux-glibc2.12-x86_64.tar。

2.压缩包下载完成之后,我们需要建立mysql 的basedir和datadir。mysql8.0版本默认支持的是basedir=/usr/local/mysql datadir=/usr/local/mysql/data

我选择了自定义路径(还想着不同版本数据库并行的事,所以决定把路径区分开):basedir=/software/mysql datadir=/mysql80data/mysql (选择自定义路径,后面需要对一些启动文件进行修改。)

选择好路径之后,就是建立路径。

mkdir /software/

mkdir -pv /mysql80data/mysql

接着解压mysql压缩包到basedir。解压完之后,会出现3个.xz格式的压缩包。

59a7faffd1ceddabbda6f4bc874c0134.png

这时候删除掉原先的mysql-8.0.22-linux-glibc2.12-x86_64.tar,因为后续解压,会出现重名的文件,导致解压失败。

mv mysql-8.0.22-linux-glibc2.12-x86_64.tar /software/

tar -xvf mysql-8.0.22-linux-glibc2.12-x86_64.tar

rm mysql-8.0.22-linux-glibc2.12-x86_64.tar

xz -d mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz

tar -xvf mysql-8.0.22-linux-glibc2.12-x86_64.tar

mv mysql-8.0.22-linux-glibc2.12-x86_64/ mysql/

接下来要进行文件夹的权限修改。由于我之前有过mysql数据库,所有没有进行创建mysql用户和mysql用户组的操作,读者可自行查阅创建方式。

chown -R mysql:mysql /software/mysql/

chown -R mysql:mysql /mysql80data/mysql/

chown -R mysql /software/mysql/

chown -R mysql /mysql80data/mysql/

chmod -R 755 /software/mysql/

3.以上内容准备好之后,我们就要开始初始化数据库了。执行下面两个命令。

cd /software/mysql/bin

./mysqld --user=mysql --basedir=/software/mysql --datadir=/mysql80data/mysql/ --initialize

这里需要特别注意:执行完初始化命令之后,终端上会打印出root用户的初始化密码,这个密码需要我们记录下来。非常重要(貌似废话,没有密码,登录又该麻烦了)。我操作的时候,忘记截图了。大家仔细阅读一下终端输出内容就好。

4.这一步,就是我们上边提到的,如果选择了自定义路径的话,需要修改一些启动文件。(如果没有选择自定义路径,请自行绕开此步骤,进入下一环节。)

首先对mysql.server命令进行修改。

vim /software/mysql/support-files/mysql.server

d300aacead4da9e2708054ba050a46d5.png

上图是我的修改,其中的白色字体都是需要修改的部分。请自行对照(其实就是修改了路径,因为没有使用默认路径)

/software/mysql/bin/mysqld_safe命令也需要进行修改。

这里就不贴图了,因为比较分散。总之就是将所有的/usr/local/mysql改为/software/mysql,然后保存退出。(可以将这个文件拷出来再修改然后替换)

5.配置mysql配置文件。并放到 /etc/ 目录下,命名为:my.cnf

注意哟,其中的路径需要按照自己的选择去修改配置。

[client]

no-beep

socket =/software/mysql/mysql.sock

# pipe

# socket=0.0

port=3306

[mysql]

default-character-set=UTF8MB4

[mysqld]

basedir=/software/mysql

datadir=/mysql80data/mysql

port=3306

pid-file=/software/mysql/mysqld.pid

#skip-grant-tables

skip-name-resolve

socket = /software/mysql/mysql.sock

character-set-server=utf8

default-storage-engine=INNODB

explicit_defaults_for_timestamp = true

# Server Id.

server-id=1

max_connections=2000

#query_cache_size在8.0版本已经移除,故注释

#query_cache_size=0

table_open_cache=2000

tmp_table_size=246M

thread_cache_size=300

#限定用于每个数据库线程的栈大小。默认设置足以满足大多数应用

thread_stack = 192k

key_buffer_size=512M

read_buffer_size=4M

read_rnd_buffer_size=32M

innodb_data_home_dir = /mysql80data/mysql

innodb_flush_log_at_trx_commit=0

innodb_log_buffer_size=16M

innodb_buffer_pool_size=256M

innodb_log_file_size=128M

innodb_thread_concurrency=128

innodb_autoextend_increment=1000

innodb_buffer_pool_instances=8

innodb_concurrency_tickets=5000

innodb_old_blocks_time=1000

innodb_open_files=300

innodb_stats_on_metadata=0

innodb_file_per_table=1

innodb_checksum_algorithm=0

back_log=80

flush_time=0

join_buffer_size=128M

max_allowed_packet=1024M

max_connect_errors=2000

open_files_limit=4161

#query_cache_type在8.0版本已经移除,故注释

#query_cache_type=0

sort_buffer_size=32M

table_definition_cache=1400

binlog_row_event_max_size=8K

sync_master_info=10000

sync_relay_log=10000

sync_relay_log_info=10000

#批量插入数据缓存大小,可以有效提高插入效率,默认为8M

bulk_insert_buffer_size = 64M

interactive_timeout = 120

wait_timeout = 28800

log-bin-trust-function-creators=1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

#

# include all files from the config directory

# !includedir /etc/my.cnf.d

6.上面操作都顺利完成之后,这里我们就可以开始尝试启动服务了。

cp /software/mysql/support-files/mysql.server /etc/init.d/mysqld

chmod 755 /etc/init.d/mysqld

/etc/init.d/mysqld start

此刻,成功启动mysql服务了!

7.客户端登录mysql。

使用在初始化数据库时,自动创建的命令来进行首次的数据库登录。

/software/mysql/bin/mysql -uroot -p

登录成功!

接下来我们需要进行密码修改。如果不进行密码修改,我们无法做操作,并且提示我们要修改密码。

mysql>ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

mysql> FLUSH PRIVILEGES;

至此,mysql8.0数据库算是安装完成,可以开始使用了。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐