MySQL学习01

时间:2024-06-01 09:46:23

1、重新部署

rm -rf arch/*

rm -rf data/*

2、scripts/mysql_install_db  --user=mysqladmin --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

3、空密码

(1)service mysql start

(2)mysql

(3)show databases;

(4)use mysql;

(5)show tables;

(6)**查看user的字段

desc user;

(7)**查看创建user表的语句

show creat table user;

(8)查看user表中host,user,password的内容

select Host,User,password from mysql.user;

MySQL学习01

=

use mysql;

select Host,User,password from user;

MySQL学习01

4、设置密码

update mysql.user set password =password('123456') where user = 'root';(xshell进入mysql记得;结尾,否则会报错。Oracle工具可以不用)

MySQL学习01

MySQL学习01

 记得linux需要刷新权限:

flush privileges;

相当于oracle的commit。

MySQL学习01

此时使用root账号重新登陆mysql需填写密码

MySQL学习01

5、 安装DBeaver

第一个方法:

(1)安装jdk

(2)配置jdk的环境变量

        打开环境变量配置。计算机→属性→高级系统设置→高级→环境变量,在系统变量中配置。

       配置JAVA_HOME。新建,变量名JAVA_HOME,变量值,jdk路径,我的路径是D:\jdk1.8.0_171,保存。

MySQL学习01

配置CLASSPATH。新建,变量名CLASSPATH,变量

值,.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(第一个分号前前面有一个点)。

MySQL学习01

 配置Path。打开Path变量,在变量值最前加入%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

MySQL学习01

(3)在官网下载安装程序,直接安装启动

第二个方法:

(1)安装jdk

(2)配置环境变量

(3)下载dbeaver压缩包

(4)解压后,新建dbeaver.exe的快捷方式,快捷方式上右键 ->  属性 ->  快捷方式 ->  目标,编辑如下

dbeaver.exe -vm D:\jdk1.8.0_171\bin\javaw.exe

(5)启动

6、登陆测试

(1)选择mysql数据库,填写

ip地址:192.168.137.130(ifconfig)

数据库:mysql

用户名:root

密码:123456

(2)安装驱动文件,点击测试链接,会自动提示更新驱动。

MySQL学习01

(3)链接错误的解决

MySQL学习01

 这是因为user表仅限本机地址登陆mysql,因此需要改其中的ip或者新增ip

MySQL学习01

 解决办法:

update mysql.user set Host='%' where Host = 'hadoop001'

MySQL学习01

 -------->不限制机器登陆,任意ip(同理可以选定某机器登陆)

再链接测试,完成连接mysql

MySQL学习01

7、生产上关于通过linux登陆mysql需要注意的点:

(1)mysql -uroot -p123456(通过运用于shell脚本,终端基本不用,因为可以通过history命令看到密码)

(2)mysql -uroot -p 123456(因为 空格也会当作是密码的一部分,所以会登陆失败)

(3)查看命令帮助,可在登陆mysql的时候指定使用哪个数据库:

MySQL学习01

 mysql -uroot -p123456 -h192.168.137.130 mysql

MySQL学习01

 (4)创建新DB和新用户

create database HBinzdb;

grant all privileges on HBinzdb.* to [email protected]'192.168.31.223' identified by '123456';

MySQL学习01

此时打开dbeaver,复制多一个连接。然后进行连接编辑,内容如下:

数据库:HBinzdb对应新创建的数据库

用户名:HBinz对应新创建的用户

MySQL学习01

这个时候报错:192.168.137.1无权限

MySQL学习01

原因分析:

目前window IP:192.168.31.223  用户:HBinz;

linux IP:192.168.137.130  mysql;

但是由于我们是运用虚拟机搭建的系统,而VM8的网卡IP:192.168.137.1,window的网络是从192.168.31.223经由VM8:192.168.137.1跳转到mysql,因此应该对192.168.137.1授权。

所以:

grant all privileges on HBinzdb.* to [email protected]'192.168.137.1' identified by '123456';

成功:

MySQL学习01

最后一定要输入:

flush privileges;

8、查看当前mysql连接数,适当kill:

show processlist;

MySQL学习01

kill ID;

kill 2;mysql输入指令一定要带分号

MySQL学习01

总结:

找到哪个processlist卡,锁死-->和开发确认好-->kill

9、常用的mysql语法

(1)建表:

create table HBinzdata(

id int,

name varchar(100),

age int,

createtime timestamp,--------生产一定要建的字段

createuser varchar(100),

updatetime timestamp,--------生产一定要建的字段

updateuser varchar(100)

);----以分号结尾

MySQL学习01

(2)DDL(有table,数据定义语言,用于定义和管理 SQL 数据库中的所有对象的语言 ):create,drop等

drop table hbinzdata;

DML(无table,据操作语言,SQL中处理数据等操作统称为数据操纵语言):insert,update,delete,select等

向id、name、age插入内容:

insert into  hbinzdata (id,name,age) values (1,'HBinz',18);

更新name为HBinz的年龄为16:

update hbinzdata set age = 16 where name = 'HBinz' 

删除name为HBinz的那一行数据:

delete from hbinzdata where name = 'HBinz'

执行多行insert语句:

MySQL学习01

查询语句,查询HBinzdata的所有行:

select * from hbinzdata

MySQL学习01

查询某几列内容:

select id ,name from hbinzdata

MySQL学习01

查询某个符合某条件的内容(不区分大小写):

select * from hbinzdata where name = 'ly'

MySQL学习01

DCL(数据控制语言,用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等 ):commit等

(3)char:保存固定长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度。最多 255 个字符。

VARCHAR:保存可变长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最大长度。最多 255 个字符。注释:如果值的长度大于 255,则被转换为 TEXT(存放最大长度为 65,535 个字符的字符串。) 类型。

(4)mysql高级版:

https://www.cnblogs.com/duhuo/p/5682565.html

1)AUTO_INCREMENT(Auto-increment 会在新记录插入表中时生成一个唯一的数字。)的使用:

MySQL学习01

2)生产中,建表的框架:

MySQL学习01

3)创建时间和更新时间字段的常用定义格式:

createtime timestamp default current_timestamp,

updatetime timestamp default current_timestamp on update current_timestamp

MySQL学习01

MySQL学习01

此时更新一下数据:

MySQL学习01

4)生产环境:    

1、delete from xxx

      AUTO_INCREMENT = 3

2、新数据进来,自增长不是从1开始,其他表数据很可能关联不上,所以要考虑当场的业务场景解决 

5)ENGINE = InnoDB       AUTO_INCREMENT  DEFAULT  CHARSET = latin1

字符集(https://blog.****.net/minwang593/article/details/16941279)

查看mysql默认字符集

show variables like '%set%';

MySQL学习01

查看数据库“mysql”的字符集:

show create database mysql;

MySQL学习01

跟默认的字符集一致。

查看表的字符集:

进入该表下的数据库,use mysql;

show create table hbinzdata;

MySQL学习01

该表的字符集是latin1,该表的字段插入不了中文的内容;

insert into  hbinzdata (name,age) values ('岑志强',28);

因此需要修改该表的字符集:

(1)create table HBinzdata(

id int AUTO_INCREMENT primary key,

name varchar(100),

age int,

createtime timestamp default current_timestamp,

createuser varchar(100),

updatetime timestamp default current_timestamp on update current_timestamp,

updateuser varchar(100)

)ENGINE=InnoDB DEFAULT CHARSET=utf8

(2)insert into  hbinzdata (name,age) values ('岑志强',28);

MySQL学习01

6)复制表

create table test select name,age from HBinzdata;----既复制表结构又复制数据

MySQL学习01

create table test1 select name,age from HBinzdata where 1<>1;----只复制表结构

MySQL学习01

7)向表内新增一个字段(默认在最后一个字段后新增)

alter table hbinzdata add address varchar(512);

MySQL学习01

向表内新增一个字段(在某一个字段后)

alter table hbinzdata add address varchar(512) after age; 

MySQL学习01

9)删除这个字段

alter table hbinzdata drop address ;

MySQL学习01