在Centos7安装mysql(8.0.13)
安装流程
首先准备安装包
这里下载的是 mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz
安装包,并将其直接放在了 root
⽬录下
卸载系统自带的MARIADB(如果有)
如果系统之前⾃带 Mariadb
,可以先卸载。
执行 rpm -qa|grep mariadb
,查询已安装的 Mariadb 安装包:
执行代码卸载上述软件:
yum -y remove mariadb-server-5.5.56-2.el7.x86_64
yum -y remove mariadb-5.5.56-2.el7.x86_64
yum -y remove mariadb-devel-5.5.56-2.el7.x86_64
yum -y remove mariadb-libs-5.5.56-2.el7.x86_64
解压MYSQL安装包
将上面准备好的 MySQL
安装包解压到 /usr/local/
目录,并重命名为 mysql
tar -xvf /root/mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz -C /usr/local/
mv mysql-8.0.13-linux-glibc2.12-x86_64 mysql
修改MSQL目录的归属用户
在
/etc
目录下新建 my.cnf
文件
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
skip-name-resolve
#设置3306端⼝
port = 3306
socket=/var/lib/mysql/mysql.sock
# 设置mysql的安装⽬录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放⽬录
datadir=/usr/local/mysql/data
# 允许最⼤连接数
max_connections=200
# 服务端使⽤的字符集默认为8⽐特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使⽤的默认存储引擎
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
同时使用如下命令创建/var/lib/mysql
目录,并修改权限:
mkdir /var/lib/mysql
chmod 777 /var/lib/mysql
正式开始安装MYSQL
执行如下命令正式开始安装:
cd /usr/local/mysql
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
复制启动脚本到资源目录
执行如下命令复制:
并修改/etc/init.d/mysqld
,修改其basedir
和datadir
为实际对应目录:
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
设置MYSQL系统服务并开启自启
首先增加mysqld
服务控制脚本执行权限:
chmod +x /etc/init.d/mysqld
同时将mysqld
服务加入到系统服务:
chkconfig --add mysqld
最后检查mysqld
服务是否已经生效即可:
chkconfig --list mysqld
这样就表明mysqld
服务已经生效了,在2、3、4、5运行级别随系统启动而自动启动,以后可以直接使用service
命令控制mysql
的启停。
启动MYSQLD
直接执行:
service mysqld start
将 MYSQL 的 BIN 目录加入 PATH 环境变量
这样方便以后在任意目录上都可以使用mysql
提供的命令。
编辑 ~/.bash_profile 文件,在文件末尾处追加如下信息:
最后执行source ~/.bash_profile
使环境变量生效
首次登陆MYSQL
以root
账户登录mysql
,使用上文安装完成提示的密码进行登入:
mysql -u root -p
接下来修改ROOT账户密码
在mysql的命令行执行如下命令即可,密码可以换成你想用的密码即可:
设置远程主机登录
远程登录之前需要开放防火墙的权限
最后利用 NAVICAT 等工具进行测试
问题处理
1. 2059 - Authentication plugin 'caching_sha2_password' cannot be loaded(navicat登录报错)
原因:旧版的navicat
登录密码加密方式与mysql 8
以上的加密方式不匹配
解决方案:创建一个新用户用于navicat
登录
创建一个用户 navicat
赋予远程访问与访问所有数据库的权限
‘修改加密方式
2. 安装pv监控数据库导入进度
原因:对于一些过大的数据库导入,会有长时间等待,产生死机焦虑
解决方案:使用插件监控数据导入
首先需要安装EPEL
仓库,执行代码sudo yum install epel-release
然后安装pv
工具,执行代码sudo yum install pv
执行命令 pv xxx.sql | mysql -u root -p mydatabase
监控数据库导入情况。
3. mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) when trying to connect
原因:按照上述教程安装后,mysqldump
的默认mysql.sock
文件地址与实际mysql.sock地址不一致
解决方案:
由于mysqldump
获取mysql.sock
与my.cnf
中配置的地址不一致,当需要备份时执行如下命令:
mysqldump --socket=/var/lib/mysql/mysql.sock -u username -p database_name > backup.sql
4. 1031 - Table storage engine for '#sql-2ca7_20' doesn't have this option,引擎切换当从myisam切换到innodb时报错
原因:myisam引擎与innodb引擎的Row_format字段有区别
解决方案:
这里的临时表是你创建了还未修改的完成Innodb的表。
导致这一问题的主要原因是,myisam中的Row_format字段取值仅有:fixed/dynamic/compressed。而在innodb中的Row_format字段取值有:compressed/dynamic/compact/redundant。
解决方法,在切换引擎之前先商量好Row_format字段如何修改。
转载自:https://juejin.cn/post/7383258697470230578