安装MySQL8.0(离线版)

离线包:在RedHat中,RPM Bundle 方式安装MySQL8。建议一定要用 RPM Bndle 版本安装,包全。

官网下载:https://dev.mysql.com/downloads/mysql/

1.卸载mariadb,会与MySQL安装冲突。

pm -qa | grep mariadb //查看有无mariadb

yum -y remove mariadb-libs.x86_64  //如果有,则删除 

2.查看是否有 numactl

rpm -qa | grep numa

如果没有 numactl 库,或者不是64位的版本,则需要安装,网上教程挺多,需要的自行查找。

3.解压tar -xvf mysql-8.0.13-1.el7.x86_64.rpm-bundle.tar

安装6个必须安装的包,需要按顺序安装。

rpm -ivh mysql-community-common-8.0.32-1.el7.x86_64.rpm

rpm -ivh mysql-community-client-plugins-8.0.32-1.el7.x86_64.rpm

rpm -ivh mysql-community-libs-8.0.32-1.el7.x86_64.rpm

rpm -ivh mysql-community-client-8.0.32-1.el7.x86_64.rpm

rpm -ivh mysql-community-icu-data-files-8.0.32-1.el7.x86_64.rpm

rpm -ivh mysql-community-server-8.0.32-1.el7.x86_64.rpm

4.启动 mysql

service mysqld start  //启动服务

service mysqld status  //查看状态

===============Yum下载安装方式========================

系统: CentOS 7(在CentOS 7中默认有安装MariaDB,这个是mysql的分支,一般来说还是使用自己安装的MySQL比较好)

通过Yum下载并安装MySQL(在线版)

wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

2、下载到指定位置后,就可以执行安装了

yum -y install mysql80-community-release-el7-3.noarch.rpm
yum -y install mysql-community-server

3、安装完后启动MySQL

systemctl start  mysqld.service

4、查看MySQL服务:

systemctl status  mysqld.service

5、查看MySQL是不是开机自启,可以执行命令查看开机自启列表

systemctl list-unit-files|grep enabled

6、此时如果要进入MySQL得找出root用户的密码,输入命令

grep "password" /var/log/mysqld.log

7、得到密码后,登录mysql,输入命令

mysql -uroot -p

8、此时,你需要给你的MySql重新设置密码,因为MySQL默认的就是必须修改密码后才能操作数据库。

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Left@zuo123.';

9、总之呢,我们先将密码设置成比较复杂的就好,比如 Abc@123…,先登录了再说。 如果想要设置简单好记的密码,可以修改密码设置规范,毕竟你不登录你就不能修改规范。 查看密码规范

SHOW VARIABLES LIKE 'validate_password%';

10、密码的长度是由validate_password_length决定的,而validate_password_length的计算公式是: validate_password_length = validate_password_number_count + validate_password_special_char_count + (2 * validate_password_mixed_case_count) 这时候我们将密码设置规范修改一下:

set global validate_password.policy=0;
set global validate_password.length=1;

11、这时候就可以设置简单的密码了,比如123456

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

12、最后一步,设置允许远程连接

如果直接使用命令:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password'; 会提示一个语法错误,有人说是mysql8的分配权限不能带密码隐士创建账号了,要先创建账号再设置权限。也有的说8.0.11之后移除了grant 添加用户的功能。

创建新用户 admin

	CREATE USER 'admin'@'%' IDENTIFIED BY '123456';

允许远程连接

	GRANT ALL ON *.* TO 'admin'@'%';

如果使用客户端连接提示了plugin caching_sha2_password错误,这是因为MySQL8.0的密码策略默认为caching_sha2_password

使用命令修改策略

ALTER USER 'admin'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; 

然后关闭防火墙,测试连接成功!!

创建MySQL用户&远程登录

test是用户名,test_pwd是密码,可以替换为自己的
create user 'test'@'%' identified by 'test_pwd';

远程登录MySQL

远程连接
mysql -h 192.168.8.8 -uroot -p

授权IP访问

仅授权某一个ip访问
grant all privileges on *.* to 'test'@'192.168.8.8' with grant option;

允许所有 ip 远程访问(危险!)
grant all privileges on *.* to 'test'@'%' with grant option;

刷新授权权限

刷新权限
flush privileges;

my.cnf 配置

#不区分大小写
lower_case_table_names = 1

#不开启sql严格模式
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

字段相关操作

添加表字段
ALTER TABLE table_name ADD column_name column_type [constraint];
#table_name:你要修改的表的名称。
#column_name:你要添加的新字段的名称。
#column_type:新字段的数据类型(如 VARCHAR, INT, DATE 等)。
#[constraint](可选):对新字段的约束条件,例如 NOT NULL, DEFAULT 等。

导入导出数据库表数据

#导出整个数据库
#使用mysql root用户导出
mysqldump -h ip地址 -uroot -P3306 -p  数据库名称 >  xxxx.sql

#只导出表结构不导出数据
mysqldump -h ip地址 -uroot -P3306 -p --no-data 数据库名称 >  xxxx.sql

#导出单个或多张表数据
mysqldump -h ip地址 -uroot -P3306 -p  数据库 表名1 表名2 >  xxxx.sql

#导入sql到指定数据库
mysql -h ip地址 -ur用户 -P3306 -p 数据库 < xxxx.sql


我的人生哲学:先吃饱饭,一切好商量!