标签 mysql 下的文章

mysql5.7 —>mysql8 的升级
MySQL8的加密方式有变化
命令行查看MySQL8 账户的加密方式

use mysql;
select user,plugin from user ;

在mysql8之前的版本使用的密码加密规则是mysql_native_password,但是在mysql8则是caching_sha2_password
Navicat不支持 caching_sha2_password 这种加密方式,所以升级后 Navicat 不能连接 MySQL8

Navicat 连接 mysql8 的解决方案有三:

方案一 重新创建一个账号,设此账号的加密方式为 mysql_native_password,使用这个账号

create user 'fanjinlong'@'%' identified with mysql_native_password by '333';
create user 'your username'@'%' identified with caching_sha2_password by 'your password';
ps. 此路不通,该账号无法创建 database 和 table

方案二 修改root 的密码加密方式,刷新

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; # 更改root 的加密方式
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';# 重置密码
FLUSH PRIVILEGES; #刷新数据库

方案三 更换MySQL8 客户端

关于 caching_sha2_password
MySQL提供了两个身份验证插件,可以为用户帐户密码实现SHA-256哈希:
sha256_password:实现基本的SHA-256身份验证。
caching_sha2_password:实现SHA-256身份验证(如sha256_password),但在服务器端使用缓存以获得更好的性能,并具有更广泛的适用性的附加功能。

在MySQL 8.0中,caching_sha2_password是默认的身份验证插件而不是 mysql_native_password。
要使用通过caching_sha2_password插件进行身份验证的帐户连接到服务器,您必须使用安全连接或支持使用RSA密钥对进行密码交换的未加密连接,如本节后面所述。无论哪种方式, caching_sha2_password插件都使用MySQL的加密功能。

[TOC]

MySQL三大基础

mysql-devel 开发用到的库以及包含文件
mysql mysql 客户端
mysql-server 数据库服务器

安装

使用yum list mysql

查看了一下我的机子上可用的mysql

安装

安装之后

初始化配置 sudo mysql_secure_installation
创建新用户:
sudo mysql
CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
然后,授予新用户合适的权限。例如,授予新用户访问数据库中所有表的权限,及添加、变更和移除用户的权限,通过如下命令即可:
GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
不需要 FLUSH PRIVILEGES只有通过 INSERT, UPDATE或者DELETE命令的方式变更授权表的时候才需要该命令。

安装之后设置

设置字符编码
/etc/my.cnf 中加入default-character-set=utf8
开机启动:
添加开机启动:chkconfig --add mysqld
开机启动:chkconfig mysqld on
查看开机启动设置是否成功: chkconfig --list | grep mysql*
参考[1]
解决phpmyadmin无法登陆,报The server requested authentication method unknown to the client [caching_sha2_password]
不要卸载MySQL 8.使用终端程序登录mysql:
mysql -u root -p
my_password
alter user 'username'@'localhost' identified with mysql_native_password by 'password';
这样就可以了。

MYSQL 经常使用tips

  • 启动:brew services start mysql
  • terminal登录:路径 -u 用户名 -p
  • mysql -u root -p 注意必须先启动MySQL
  • 更改初始密码:set password for 'root'@'localhost' = password('newPassword');

db 操作

* show databases;
* create database NEW_DB;
* drop database NEW_DB;
* use database DBname;

table 操作

* CREATE TABLE table_name (column_name column_type);
* DROP TABLE table_name ;// 删除表
* INSERT INTO table_name ( field1, field2,...fieldN )
                       VALUES
                       ( value1, value2,...valueN );
* SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[OFFSET M ][LIMIT N]
* DELETE FROM table_name [WHERE Clause] // 根据条件删除表内容
* RENAME TABLE
    tbl_name TO new_tbl_name
    [, tbl_name2 TO new_tbl_name2] ...
- show columns from user_info; // 显示表头,列字段
* alter table star_info change SysCreated sys_created int(10) not null default 0 comment '创建时间'; // 更改字段名

create table example

create table user(
id INT(10) not null auto_increment comment '主键ID',
user_name varchar(50) not null comment '用户名',
age tinyint(1) not null default '0' comment '年龄',
email varchar(50) not null comment '邮箱',
pwd varchar(50) not null comment '密码',
primary key (id)
)engine=InnoDB default charset=utf8 comment '用户表';

数据库与表命名规则:database name/table name/column name 全部小写,单词之间用_ 下划线 分割。因为数据库字段是大小写不敏感的。驼峰命名无意义。

数据类型

数值型

TINYINT 1 字节 (-128,127) (0,255) 小整数值
SMALLINT 2 字节 (-32 768,32 767) (0,65 535) 大整数值
MEDIUMINT 3 字节 (-8 388 608,8 388 607) (0,16 777 215) 大整数值
INT或INTEGER 4 字节 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
BIGINT 8 字节 (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值
FLOAT 4 字节 (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 单精度
浮点数值
DOUBLE 8 字节 (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 双精度
浮点数值
DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值 依赖于M和D的值 小数值

日期时间

DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS 时间值或持续时间
YEAR 1 1901/2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
TIMESTAMP 4
1970-01-01 00:00:00/2038
结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07
YYYYMMDD HHMMSS 混合日期和时间值,时间戳

字符型

CHAR 0-255字节 定长字符串
VARCHAR 0-65535 字节 变长字符串
TINYBLOB 0-255字节 不超过 255 个字符的二进制字符串
TINYTEXT 0-255字节 短文本字符串
BLOB 0-65 535字节 二进制形式的长文本数据
TEXT 0-65 535字节 长文本数据
MEDIUMBLOB 0-16 777 215字节 二进制形式的中等长度文本数据
MEDIUMTEXT 0-16 777 215字节 中等长度文本数据
LONGBLOB 0-4 294 967 295字节 二进制形式的极大文本数据
LONGTEXT 0-4 294 967 295字节 极大文本数据
[1]https://www.cnblogs.com/yaomajor/p/5710873.html

mac 下迁移数据库的结构和内容

迁移准备:数据库文件(可用工具导出Mysql文件)

注意:由于文件权限的问题 可能不能进入Mysql的data文件内
  1. 进入文件 /usr/local/mysql/data
    如果打不开,修改文件访问权限,(右击,显示简介,修改文件读写权限)
  2. 将相应的文件(如:MYD,MYI,frm) copy进合适的数据库内(文件夹)
  3. 打开数据库,查看迁移情况