pxuan

新装了mysql8.0后再用navicat链接就会报2059的错误。

1.进入mysql命令: mysql -uroot -p

2.输入你的密码:xxxx
然后运行以下SQL即可

alter user \'root\'@\'%\' identified by \'123456\' password expire never;
alter user \'root\'@\'%\' identified with mysql_native_password by \'123456\';
flush privileges;

 

3. 连接远程服务器 mysql -h 39.106.41.11 -utest -pgloryroad -p3306

 

 mysql 命令需要增加到path路径下

 

4.展示数据库:show databases;

 

5.切换数据库: use 数据库名称;

 

6.查看你当前选中的数据库:select database();

 

7.展示数据库中的表: show tables;
  查看表数据          1、select * from tableName
  条件查询数据       2、select * from tableName where id = 20;
  查询表插入领一张表数据  3、insert into tableName(id, name) select 21,name from tableName where c_id = 20;

 

8.创建数据库:create database gloryroad;

 

9.创建表:create table test(id int,name varchar(20));

 

10:插入数据:insert into test values(1,"lilaoshi");

 

11.更新数据:update test set name="cailaoshi" where id = 2;

 

12.删除数据库:drop database gloryroad; (慎重操作)

 

13.删除表的数据:delete from test;

 

14.删除表数据和表结构:drop table test;

 

15.建一个复杂的表:CREATE TABLE `studentinfo` (   `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT \'不为空的自增长的主键ID\',   `student_id` varchar(20) NOT NULL,   `name` varchar(30) NOT NULL,   `sex` char(4) DEFAULT NULL,   `tel` varchar(13) NOT NULL,   `AdmissionDate` timestamp DEFAULT \'0000-00-00 00:00:00\',   `status` tinyint(2) DEFAULT \'0\',   PRIMARY KEY (`ID`),   UNIQUE KEY `tel` (`tel`),   UNIQUE KEY `student_id` (`student_id`) ) ENGINE=InnoDB AUTO_INCREMENT=101 DEFAULT CHARSET=utf8 COMMENT=\'学生信息表\';

 

遇到了一个错误:

 

ERROR 1067 (42000): Invalid default value for \'AdmissionDate\'

 

产生的原因:

 

是因为sql_mode中的NO_ZEROR_DATE导制的,在strict mode中不允许\'0000-00-00\'作为合法日期

 

查看sql_mode:show variables like \'sql_mode\';

 

+---------------+--------------------------------------------------------------------------------------------------------------+

| Variable_name | Value |

+---------------+--------------------------------------------------------------------------------------------------------------+

| sql_mode | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |

+---------------+--------------------------------------------------------------------------------------------------------------+

 

解决办法:set sql_mode=\'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\';

 

16:创建一个关联的表:

 

create table grade( ID int auto_increment not null, stuID varchar(20), course varchar(20) not null, score tinyint(4) default 0, primary key (ID), key idx_stuid(stuID), CONSTRAINT FK_ID FOREIGN KEY(stuID) REFERENCES studentInfo(student_id) )engine=innodb character set utf8 comment "学生成绩表";

 

名词解释-外键:

 

外键: grade表中插入的stuID字段的数据必须在studentInfo 的student_id中存在,不在,则不让插入。 删除studentInfo中的student_id数据,那么grade中相关 的stuID数据必须先删除,才能成功。

 

示例:

 

studentInfo student_id:2007123 #不能直接删除,grade表中 删除2007123,就可以删除 student_id:2007123 grade: stuID:2007124 插入失败 stuID:2007123 插入成功--》把删掉

 

 

 

*************************************************华丽的分割线***************************************************

 

python操作数据库的模式:

 

写一堆参数连接数据

 

获取游标

 

执行sql

 

关闭游标

 

关闭连接

另,查询数据库运行状态的基本命令:

#查询数据库连接
show full  processlist;
show status like \'%Max_used_connections%\';
show status like \'%Threads_connected%\';#当前连接数
show status like \'%table_lock%\';#表锁定
show status like \'innodb_row_lock%\';#行锁定
show status like \'%qcache%\'; #查询缓存情况
show variables like "%query_cache%";
SHOW STATUS LIKE \'Qcache%\';
show variables like "%binlog%";
show status like \'Aborted_clients\';#由于客户没有正确关闭连接已经死掉,已经放弃的连接数量
show variables like \'%max_connections%\';//查看最大连接数量
show variables like \'%timeout%\';#查看超时时间
show variables like \'log_%\'; #查看日志是否启动
 
 

1.在虚拟机的centos 中安装 docker 的mysql 镜像。

docker run --name mysql01 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest

2 .在虚拟机外面通过客户端访问docker安装的mysql ,连接失败

(1)进入镜像中的mysql(ti 后面的字符串是mysql镜像ID)

docker exec -ti 2cbb0f246353 /bin/bash

(2)登录mysql

mysql -u root -p

(3)修改root 可以通过任何客户端连接

ALTER USER \'root\'@\'%\' IDENTIFIED WITH mysql_native_password BY \'123456\';

 

分类:

技术点:

相关文章:

  • 2022-01-23
  • 2021-04-20
  • 2021-10-07
  • 2021-07-21
  • 2021-08-14
  • 2022-01-16
  • 2021-04-28
  • 2021-11-27
猜你喜欢
  • 2022-12-23
  • 2021-06-30
  • 2022-12-23
  • 2021-05-13
  • 2021-09-12
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案