Centos8安装mysql指定版本
环境清理
1、查看之前已安装的Mysql
rpm -qa |grep mysql
如果之前已经安装过,则会出现一些Mysql相关的组件
2、卸载之前已经安装的Mysql
rpm -e mysql-xxx
yum安装Mysql
1、安装wget,有就不用了
yum install wget
2、下载mysql的rpm
wget http://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
3、安装mysql的rpm
rpm -ivh mysql80-community-release-el7-3.noarch.rpm
这时候会在 /etc/yum.repos.d/目录下生成两个文件
mysql-community.repo和mysql-community-source.repo
4、修改repo文件(指定安装版本)
cd /etc/yum.repos.d/
vim mysql-community.repo
将指定版本**[mysqlxx-community]**下的“enabled”,1 表示安装,0表示不安装
修改完保存退出
5、安装Mysql
yum -y install mysql-community-server
下载client缓慢的解决思路:将Centos7的yum配置为阿里云的镜像
步骤如下:
yum clean all
yum update
备份:mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
下载新的CentOS-Base.repo 到/etc/yum.repos.d/ wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache
如果报错:
先执行如下命令后再执行安装命令
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
如果报错:
先执行如下命令后再执行安装命令
yum module disable mysql
yum -y install mysql-community-server
如果报错:
# 执行下面命令进行安装
yum -y install mysql-community-server --nogpgcheck
6、查看Mysql版本
[root@localhost yum.repos.d]# mysql --version
mysql Ver 14.14 Distrib 5.7.32, for Linux (x86_64) using EditLine wrapper
7、启动Mysql并查看Mysql状态
systemctl start mysqld.service
systemctl status mysqld.service
8、第一次完成安装后设置连接密码
- 首先查找初始密码
grep "password" /var/log/mysqld.log
- 使用查找的初始密码登录Mysql
mysql -uroot -p
- 设置自定义连接密码
如果想更改密码强度,执行以下命令
密码强度等级 0——low,1——medium,2——strong
set global validate_password_policy=0;
密码长度
set global validate_password_length=5;
修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
- 开启远程访问
grant all privileges on *.* to 'root'@'%' identified by 'password' with grant option;
9、其他配置
修改mysql的字符编码(不修改会产生中文乱码问题)
显示原来编码:
show variables like '%character%';
修改/etc/my.cnf
vim /etc/my.cnf
#在[mysqld]下添加如下内容
lower_case_table_names=1
default-storage-engine=INNODB
innodb_default_row_format=DYNAMIC
innodb_large_prefix=ON
innodb_file_format=Barracuda
character-set-server=utf8mb4
init_connect='SET NAMES utf8'
# MySQL支持的SQL语法模式
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER
skip-name-resolve
bulk_insert_buffer_size=3048M
innodb_autoextend_increment=128M
default-time_zone = '+8:00'
max_connections=10000
group_concat_max_len=10240000
innodb_flush_method=O_DIRECT
innodb_log_file_size=2048M
innodb_buffer_pool_size=6048M
max_allowed_packet=3027000000
secure-file-priv=
检查mysql服务状态:
systemctl status mysql
重启数据库
systemctl restart mysqld
为firewalld添加开放端口
添加mysql端口3306
firewall-cmd --zone=public --add-port=3306/tcp --permanent
然后再重新载入
firewall-cmd --reload
设置开机启动
systemctl enable mysqld
systemctl daemon-reload
扩展
Docker启动mysql
docker run --name mysql8.0.27 -v /home/mysql/8.0.27/conf:/etc/mysql/ -v /home/mysql/8.0.27/data:/var/lib/mysql -v /home/mysql/8.0.27/mysql-files:/var/lib/mysql-files/ -p 80811:3306 -e MYSQL_ROOT_PASSWORD=111111 -d mysql:latest
导出数据
- 导出整个数据库结构和数据:
mysqldump -h ip -uroot -p123456 dbname > db.sql;
(注:-h ip 是远程访问数据库的ip地址,本地执行可以省略,以下同理)
- 导出单个数据表结构和数据:
mysqldump -h ip -u root -p123456 dbname tablename > tablename.sql;
- 复制数据库:
mysqldump dbname -uroot -p123456 --add-drop-table | mysql -h ip copy_dbname -uroot -p123456;
- 导出整个数据库结构(不包含数据):
mysqldump -h localhost -uroot -p123456 -d database > dump.sql
- 导出单个数据表结构(不包含数据):
mysqldump -h localhost -uroot -p123456 -d database table > dump.sql
- 导出整个数据库数据(不包含结构):
mysqldump -h localhost -uroot -p123456 -t database > dump.sql
- 导出单个数据表数据(不包含结构):
mysqldump -h localhost -uroot -p123456 -t database table > dump.sql
错误提示
mysqldump: Couldn’t execute 'SELECT COLUMN_NAME, JSON_EXTRACT(HISTOGRAM, ‘$.“number-of-buckets-specified”’) FROM information_schema.COLUMN_STATISTICS
原因:
因为新版的mysqldump默认启用了一个新标志,通过- -column-statistics=0来禁用他
解决方法:
mysqldump --column-statistics=0 -h ip -u root -p dbname > db.sql;
导入数据
source /tmp/xxx.sql