千家信息网

mysql 安装 和简单使用技巧1

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,# mysql_install_db --user=mysql -datadir=/var/lib/mysql 初始化数据vncviewer 172.40.50.117:6000内存 cpu 硬盘#
千家信息网最后更新 2024年11月23日mysql 安装 和简单使用技巧1


# mysql_install_db --user=mysql -datadir=/var/lib/mysql 初始化数据



vncviewer 172.40.50.117:6000


内存 cpu 硬盘


# yum grouplist





mysql(3306)


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

1.用rpm装 使用光盘封装好的rpm包


[root@host ~]# yum -y install mysql-server

..........................

[root@host ~]# rpm -q mysql-server (查看是否安装和版本号)

mysql-server-5.1.73-5.el6_6.x86_64

[root@host ~]# yum list |grep mysql-server

mysql-server.x86_64 5.1.73-5.el6_6 @abc

[root@host ~]# service mysqld start

初始化 MySQL 数据库: WARNING: The host 'host.tedu.cn' could not be looked up with resolveip.


[root@host ~]# service mysqld status

mysqld (pid 21119) 正在运行...

[root@host ~]# chkconfig mysqld on

[root@host ~]# chkconfig --list mysqld

mysqld 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭


[root@host ~]# grep mysql /etc/passwd

mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash




/var/lib/mysql (数据库目录) 下面目录和文件用户和组都是mysql


/etc/my.cnf 主配置文件


/var/log/mysqld.log (日志文件)


/var/run/mysqld/mysqld.conf (pid路径)


[root@proxe ~]# which mysql

/usr/bin/mysql

[root@proxe ~]# rpm -qf /usr/bin/mysql

mysql-5.1.73-5.el6_6.x86_64



低版本:


进程名和服务名都是mysqld


传输协议tcp


rmp包装 进程所有者和所属组是mysql这个用户




----------------------------------------------------------------------

低版本:


(自己连:)mysql -hlocalhost -uroot -p (本机登也可 mysql)


(别人练:)# mysql -h ip

-------------------------------------------------------------------------


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

2.从官网上下载安装 (先把之前rpm装的删除)


1)删除之前安装的

[root@host ~]# service mysqld stop

停止 mysqld: [确定]


[root@host ~]# rpm -e --nodeps mysql-server mysql (--nodeps忽略依赖关系 就是依赖关系包不卸载 mysql连接工具卸载掉 因为下面装的会有)


[root@host ~]# rm -fr /etc/my.cnf

[root@host ~]# rm -fr /var/lib/mysql/*


2)把官网下的解包安装

[root@host ~]# tar -xvf MySQL-5.6.rpm.tar


MySQL-shared-5.6.15-1.el6.x86_64.rpm

MySQL-devel-5.6.15-1.el6.x86_64.rpm

MySQL-embedded-5.6.15-1.el6.x86_64.rpm

MySQL-test-5.6.15-1.el6.x86_64.rpm

MySQL-server-5.6.15-1.el6.x86_64.rpm

MySQL-shared-compat-5.6.15-1.el6.x86_64.rpm

MySQL-client-5.6.15-1.el6.x86_64.rpm


[root@host ~]# rpm -Uvh MySQL-*.rpm (因为上面只删除了主配置文件,和mysql-server这个包 所有的依赖包还在 所以大U直接升级)



[root@host ~]# rpm -qa |grep -i mysql

MySQL-test-5.6.15-1.el6.x86_64

MySQL-server-5.6.15-1.el6.x86_64

MySQL-client-5.6.15-1.el6.x86_64

MySQL-embedded-5.6.15-1.el6.x86_64

MySQL-shared-5.6.15-1.el6.x86_64

perl-DBD-MySQL-4.013-3.el6.x86_64

MySQL-devel-5.6.15-1.el6.x86_64

MySQL-shared-compat-5.6.15-1.el6.x86_64


[root@host ~]# service mysql start

Starting MySQL.. SUCCESS!

[root@host ~]# netstat -anptu |grep :3306

tcp 0 0 :::3306 :::* LISTEN 21509/mysqld


[root@host t]# which mysql

/usr/bin/mysql

[root@host t]# rpm -qf /usr/bin/mysql

MySQL-client-5.6.15-1.el6.x86_64

[root@host t]# rpm -q MySQL-client (高版本mysql包名叫这)

MySQL-client-5.6.15-1.el6.x86_64






3)高版本使用:会有密码,在/root/.mysql_secret下 进去需要该密码才能使用。


[root@host ~]# cat /root/.mysql_secret

# The random password set for the root user at Wed Feb 22 07:54:48 2017 (local time): 1eFb6CeJ


[root@host ~]# mysql -hlocalhost -uroot -p1eFb6CeJ




mysql> set password for root@"localhost"=password("123");

Query OK, 0 rows affected (0.03 sec)






____________________________________________________________________________________________________

[root@proxe mysql]# ls

auto.cnf ib_logfile1 performance_schema RPM_UPGRADE_HISTORY

ibdata1 mysql proxe.tedu.cn.err RPM_UPGRADE_MARKER-LAST

ib_logfile0 mysql.sock proxe.tedu.cn.pid test

[root@proxe mysql]# mysql -hlocalhost -uroot -pHYwSHnwN

Warning: Using a password on the command line interface can be insecure.

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)


[root@proxe mysql]# ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock 或创建一个这样的文件在这

________________________________________________________________________________________________________











高版本:

服务名mysql

进程名mysqld(

http传输协议:tcp


rpm包装的,进程所有者和所有组都是mysql


数据库目录:/var/lib/mysql


主配置文件:/etc/my.cnf





/var/run/mysqld/mysqld.conf 主配置文件


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

数据迁移


mysql ---->mariadb



关系型数据库mysql 难度大

非关系型数据库 redis 简单 用户名密码





使用数据库服务

启动

停止

状态

连接




DDL 就是删表删库建表建库





以文件的形式存放在数据库目录下 /var/lib/mydql






DB (/var/lib/mysql)

DBS (装列数据库和操作系统)

DBMS (mysql)


E-R数据模型




字符类型:char varchar blob text

数值类型:int tinyint smallint

日期时间类型:year date time datetime

枚举类型 enmu(单选项)

set(多个)



字符:

char 255 定长 不指默认是(1)

varchar 65532 变长 一定要指

大文本类型 blob / text 不要指


数值:

整型 微小×××(-128-127 0-255)tinyint默认有符号 tinyint unsigned(无符号)


小××× 中整型 大××× 极大整型

浮点型 float(单精度) double(双)


正整数 12

负整数-12


int(2)显示宽度 默认11位, 没到这么多位会补。 zerofill,





日期时间:

year 年 YYYY 2017 --2155

date 日期 YYYYMMDD 20170223

time 时间 HHMMSS 165425

datetime / timestamp

YYYYMMDDHHMMSS

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++





++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



基本操做:

[root@host ~]# mysql -uroot -p123


mysql> show databases;

mysql> use yy;


mysql> select database();


mysql> create database y;


mysql> create table t1(

-> name char(4)

-> );

mysql> desc t1;


mysql> insert into t1

-> values

-> ("tom"

-> );


mysql> select * from t1;

mysql> delete from t1;

mysql> drop table t1;

mysql> drop database y;

______________________________________________________________________________________________


对表的操作:

----------------------------------------

字符类型 (姓名 家庭地址)

char 定长 <=255 默认不指是1

varchar 变长 <=65532 不指报错

大文本类型

blob

text


-----------------------


mysql> create table t2 (name char, home varchar(5) );

Query OK, 0 rows affected (0.67 sec)

mysql> desc t2;

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

| Field | Type | Null | Key | Default | Extra |

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

| name | char(1) | YES | | NULL | |

| home | varchar(5) | YES | | NULL | |

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

2 rows in set (0.00 sec)

mysql> insert into t2

-> values

-> ("tom","zhangh");

ERROR 1406 (22001): Data too long for column 'name' at row 1

mysql> insert into t2 values ("t","zhangh");

ERROR 1406 (22001): Data too long for column 'home' at row 1

mysql> insert into t2 values ("t","zhang");

Query OK, 1 row affected (0.11 sec)


mysql> select * from t2;

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

| name | home |

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

| t | zhang |

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


字符类型:char 最长不超过255个字符,默认不指是1,输值时不能对于指定字符但可以少于它。

varshar 最长不超65532个字符,默认不指报错,输值时不能对于指定字符但可以少于它。

数据比较大时,用blob,和text, 输入字符数据时要用双引引上。

--------------------------------------------


整数类型

--------


根据存储数值的范围又分为:

有符号 无符号

tinyint 微小整型 -128~127 0~255

smallint

MEDIUMINT

int

bigint


int(2)显示宽度 默认11位, 没到这么多位会补。 int(2) zerofill,


tinyint 默认是有符号数值为:-128--127 ,无符号数值为0--255 需要接unsigned(没有负数)

当碰到小数都四舍五入。

mysql> create table t4(

-> level tinyint);

Query OK, 0 rows affected (0.76 sec)


mysql> insert into t4 values (128);

mysql> insert into t4 values (127);

Query OK, 1 row affected (0.05 sec)

mysql> insert into t4 values (-170);

ERROR 1264 (22003): Out of range value for column 'level' at row 1

mysql> insert into t4 values (17.54);

Query OK, 1 row affected (0.05 sec)

mysql> insert into t4 values (17.44);

Query OK, 1 row affected (0.08 sec)

mysql> select * from t4;

+-------+

| level |

+-------+

| 127 |

| 18 |

| 17 |

+-------+

3 rows in set (0.00 sec)







mysql> create table t7( age int(3) zerofill); int(也可默认不写)

mysql> insert into t8 value (1.5);

Query OK, 1 row affected (0.08 sec)


mysql> insert into t8 value (2.8);

Query OK, 1 row affected (0.08 sec)


mysql> insert into t8 value (3.2);

Query OK, 1 row affected (0.10 sec)

mysql> insert into t8 value (5452);

Query OK, 1 row affected (0.05 sec)


mysql> insert into t8 value (54);

Query OK, 1 row affected (0.03 sec)


mysql> select * from t8;

+------+

| age |

+------+

| 002 |

| 003 |

| 003 |

| 5452 |

| 054 |


【int 后接zerofill 给定显示宽度为3当没达到时会用0补齐】



float(n,m)浮点型


mysql> create table t9( age float(7,2));

Query OK, 0 rows affected (0.56 sec)


mysql> insert into t9 value(12345.1);

Query OK, 1 row affected (0.04 sec)


mysql> insert into t9 value(12345);

Query OK, 1 row affected (0.03 sec)


mysql> insert into t9 value(15);

Query OK, 1 row affected (0.03 sec)


mysql> insert into t9 value(15.215);

Query OK, 1 row affected (0.23 sec)


mysql> insert into t9 value(-15.215);

Query OK, 1 row affected (0.03 sec)


mysql> select * from t9;

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

| age |

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

| 12345.10 |

| 12345.00 |

| 15.00 |

| 15.21 |

| -15.21 |

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


数值类型的宽度与字符类型宽度的区别?

数值类型的宽度是显示宽度,不能够控制给字段赋值的大小,字段值的大小由字段类型决定。




日期时间类型 (生日 注册时间 入职时间)

年 year YYYY 2016

01-69 20XX

70-99 19XX

00 0000


日期 date YYYYMMDD 20161219

时间 time HHMMSS 144518


日期时间 ( 约会时间 )

datetime / timestamp(当给前面设置一个时间值是,它会自动取当前值)


YYYYMMDDHHMMSS

20170214183018



datetime 与 timestamp 的区别?

当不给timestamp类型的字段赋值时,用系统当前的时间给字段赋值。


create table t16(

time1 timestamp,

time2 datetime

);






++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=

mysql> create table t17 ( time1 year, time2 date, time3 time, time5 datetime, time6 time );

Query OK, 0 rows affected (0.70 sec)

mysql> insert into t17 value (2017, 20160721, 141223, 20170721151515, 151615);

Query OK, 1 row affected (0.04 sec)


mysql> select * from t17;

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

| time1 | time2 | time3 | time5 | time6

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

| 2017 | 2016-07-21 | 14:12:23 | 2017-07-21 15:15:15 | 15:16:15 |

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

1 row in set (0.00 sec)



++++++++

mysql> create table t19 ( time1 timestamp, time2 datetime );


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

| Field | Type | Null | Key | Default | Extra |

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

| time1 | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |

| time2 | datetime | YES | | NULL | |

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


mysql> insert into t19 values(20171219103003,20160521022223);

Query OK, 1 row affected (0.03 sec)


mysql> select * from t19;

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

| time1 | time2 |

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

| 2017-12-19 10:30:03 | 2016-05-21 02:22:23 |

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

1 row in set (0.00 sec)

+++++++

mysql> insert into t19(time1) value(20190512131452);

Query OK, 1 row affected (0.11 sec)


mysql> select * from t19;

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

| time1 | time2 |

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

| 2017-12-19 10:30:03 | 2016-05-21 02:22:23 |

| 2019-05-12 13:14:52 | NULL |

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


++++

mysql> create table t20( name char(10), age int, tim1 time, tim2 date);

mysql> insert into t20(name,tim1) value("tom",151516);

mysql> select * from t20;

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

| name | age | tim1 | tim2 |

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

| tom | NULL | 15:15:16 | NULL |

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

1 row in set (0.00 sec)



+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



使用时间函数获取时间给日期时间类型字段赋值?

now() 获取当前系统时间

year() 获取年份

date() 获取日期

month() 获取月份

day() 获取日期(几号)

time() 获取时间

+++++++++++++++++++



select now();

select year( now() );

select month(now());

select day (now());

aelect date(now());

select year( 20191224 );

select date( now() );

+++++++++++++++++++++++++++++++++++++

mysql> select now();

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

| now() |

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

| 2017-02-22 18:39:23 |

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

1 row in set (0.00 sec)


mysql> select year(now());

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

| year(now()) |

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

| 2017 |

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

1 row in set (0.00 sec)


mysql> select year(20191224);

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

| year(20191224) |

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

| 2019 |

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

1 row in set (0.00 sec)


mysql> select date (now());

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

| date (now()) |

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

| 2017-02-22 |

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

1 row in set (0.00 sec)


mysql> select month(now());

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

| month(now()) |

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

| 2 |

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

1 row in set (0.00 sec)


mysql> select day(now());

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

| day(now()) |

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

| 22 |

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

1 row in set (0.00 sec)

mysql> select date(now());

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

| date(now()) |

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

| 2017-02-22 |

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

1 row in set (0.00 sec)


+++++++++++++++++++++++++++++++++++++++

insert into t15 values("lili",21,18800.88,093000,20171008,1995,now());

insert into t15 values("jerry",29,28800.88,now(),now(),now(),now());

insert into t15 values("tom",21,18800.88,time(20171224201818),date(20171224201818),year(now()),now());





枚举类型 (爱好 性别 专业 )

字段的值只能在列举的范围内选择

enum(值列表) 单选

set(值列表) 多选


create table t177(

name char(10),

sex enum(0,1),

likes set("book","game","film","music")

);


create table t17(

name char(10),

sex enum("boy","girl","no"),

likes set("book","game","film","music")

);


desc t17;

insert into t17 values("bob","boy","woman,game");

insert into t17 values("bob","boy","book,game");

insert into t17 values("alic",3,"game");

select * from t17;




create table t5( name text );

create table t5( name blob );




++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

做一个学生表:

mysql> create table student( name char(10), age tinyint unsigned, level float(3,2), pay float(7,2), sex enum("man","woman"), likes set("book","music","film"), homeadder char(10), phone bigint,num int(2) zerofill );


mysql> desc student

-> ;

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

| Field | Type | Null | Key | Default | Extra |

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

| name | char(10) | YES | | NULL | |

| age | tinyint(3) unsigned | YES | | NULL | |

| level | float(3,2) | YES | | NULL | |

| pay | float(7,2) | YES | | NULL | |

| sex | enum('man','woman') | YES | | NULL | |

| likes | set('book','music','film') | YES | | NULL | |

| homeadder | char(10) | YES | | NULL | |

| phone | bigint(20) | YES | | NULL | |

| num | int(2) unsigned zerofill | YES | | NULL | |

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

9 rows in set (0.00 sec)



mysql> insert into student value ("zhangsbing", 25, 1.711, 21203.222, 1, "book,music","shanghai", 18500202211, 2 );

mysql> mysql> select * from student;

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

| name | age | level | pay | sex | likes | homeadder | phone | num |

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

| zhangsbing | 25 | 1.71 | 21203.22 | man | book,music | shanghai | 18500202211 | 02 |

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

1 row in set (0.00 sec)

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++




修改表结构

alter table 表名 执行动作;



mysql> desc student;

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

| Field | Type | Null | Key | Default | Extra |

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

| name | char(10) | YES | | NULL | |

| age | tinyint(3) unsigned | YES | | NULL | |

| level | float(3,2) | YES | | NULL | |

| pay | float(7,2) | YES | | NULL | |

| sex | enum('man','woman') | YES | | NULL | |

| likes | set('book','music','film') | YES | | NULL | |

| homeadder | char(10) | YES | | NULL | |

| phone | bigint(20) | YES | | NULL | |

| num | int(2) unsigned zerofill | YES | | NULL | |

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

9 rows in set (0.00 sec)



________________

add 添加新字段

add 字段名 类型(宽度);

add 字段名 类型(宽度) 约束条件 ;

add 字段名 类型(宽度) 约束条件 first;

add 字段名 类型(宽度) 约束条件 after 字段名;



mysql> alter table student

-> add

-> class char(7) default "NSD1611" first,

-> add

-> class_uptime time not null default 083000

-> ;

mysql> mysql> select * from student;

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

| class | name | age | level | pay | sex | likes | homeadder | phone | num | class_uptime |

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

| NSD1611 | zhangsbing | 25 | 1.71 | 21203.22 | man | book,music | shanghai | 18500202211 | 02 | 08:30:00 |

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

1 row in set (0.00 sec)


mysql> alter table student add university char(20) default "nongyedaxue" after class;

mysql> select * from student;

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

| class | university | name | age | level | pay | sex | likes | homeadder | phone | num | class_uptime |

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

| NSD1611 | nongyedaxue | zhangsbing | 25 | 1.71 | 21203.22 | man | book,music | shanghai | 18500202211 | 02 | 08:30:00 |

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

++++++++++++++++


drop 删除字段

drop 字段名

alter table t1 drop name,drop sex;


mysql> alter table student drop name,drop sex;


mysql> select * from student;

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

| class | university | age | level | pay | likes | homeadder | phone | num | class_uptime |

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

| NSD1611 | nongyedaxue | 25 | 1.71 | 21203.22 | book,music | shanghai | 18500202211 | 02 | 08:30:00 |

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


mysql> alter table student add sex enum("boy","girl") not null default "boy" after age;

mysql> mysql> select * from student;

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

| class | university | age | sex | level | pay | likes | homeadder | phone | num | class_uptime |

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

| NSD1611 | nongyedaxue | 25 | boy | 1.71 | 21203.22 | book,music | shanghai | 18500202211 | 02 | 08:30:00 |

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


mysql> alter table student

-> modify

-> sex enum("boy","girl","no") not null default "no";


mysql> mysql> select * from student;

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

| class | university | age | sex | level | pay | likes | homeadder | phone | num | class_uptime |

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

| NSD1611 | nongyedaxue | 25 | boy | 1.71 | 21203.22 | book,music | shanghai | 18500202211 | 02 | 08:30:00 |

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

1 row in set (0.00 sec)


mysql> desc student;

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

| Field | Type | Null | Key | Default | Extra |

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

| class | char(7) | YES | | NSD1611 | |

| university | char(20) | YES | | nongyedaxue | |

| age | tinyint(3) unsigned | YES | | NULL | |

| sex | enum('boy','girl','no') | NO | | no | |

| level | float(3,2) | YES | | NULL | |

| pay | float(7,2) | YES | | NULL | |

| likes | set('book','music','film') | YES | | NULL | |

| homeadder | char(10) | YES | | NULL | |

| phone | bigint(20) | YES | | NULL | |

| num | int(2) unsigned zerofill | YES | | NULL | |

| class_uptime | time | NO | | 08:30:00 | |

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


















0