返回列表 发帖

Windows2008R2_安装MySQL5.5

MySQL是一种关系型数据库,目前属于Oracle公司。MySQL是一种关联数据库管理系统,将数据保存在不同的表中,提高了速度和灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL分为社区版和商业版,由于其体积小、速度快、成本低,尤其是开放源代码这一特点,一般中小型网站都选择MySQL作为网站数据库,搭配Apache/Nginx和PHP可运行的PHP网站。


MySQL5.5的32位软件:https://pan.baidu.com/s/1p6IbVtTh3nXS1Igf_S7BkQ
MySQL5.5的64位软件:https://pan.baidu.com/s/1TqGDIELF5M5ZuvbEhFL67Q


安装MySQL:
图片1.png

图片2.png

图片3.png


这里选择Custom:(自定义MySQL的安装路径)
图片4.png

图片5.png
注释:MySQL的安装路径中,不能含有中文;生产环境中,不要安装在C盘。

图片6.png


图片7.png

图片8.png

图片9.png


图片10.png

图片11.png


下面是选择MySQL的应用类型:
图片12.png
注释:第一种是开发服务器,将占用尽量少的内存;第二种是Web/应用服务器,将占用中等数量内存;最后一种是这台服务器只跑MySQL数据库,将占用全部的可用内存。


下面是选择数据库的用途:
图片13.png
注释:第一种是多功能用途,将把数据库优化成很好的InnoDB和高效率的MyISAM存储引擎;第二种是只用于事务处理类型,支持InnoDB、MyISAM;最后一种是非事务处理类型,只支持MyISAM;
一般选择第一种多功能用途。


图片14.png


选择MySQL的最大连接数:
图片15.png
注释:安装后,以MySQL的主配置文件为准。


选择MySQL的监听端口,默认是TCP 3306:
图片16.png
注释:可以在这里打开操作系统的防火墙的TCP 3306端口。


选择数据库的默认字符集:
图片17.png
注释:安装后,以MySQL的主配置文件为准。


图片18.png


设置MySQL的数据库管理员root@localhost的密码,这个超级用户非常重要,拥有对数据库完全控制的权限:
图片19.png


图片20.png

点击“Finish”按键,完成安装:
图片21.png



安装完成后,打开服务:
图片22.png

图片23.png

图片24.png
注释:MySQL服务默认会随系统的启动而自动启动。



根据上面安装时的配置,已在操作系统的防火墙打开TCP 3306端口:
图片25.png

图片26.png



使用客户端命令行程序,登录MySQL:
图片27.png

输入数据库管理员root@localhost的密码:
图片28.png

图片29.png

查看数据库里有哪些库:(以下4个库是默认就有的)
show databases;
图片30.png





MySQL的主配置文件:
图片31.png

MySQL的主配置文件的内容:(根据上面安装时的配置,自动生成的)

[client]
port=3306

[mysql]
default-character-set=utf8

[mysqld]
port=3306
basedir="D:/MySQL/"
datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"
character-set-server=utf8
default-storage-engine=INNODB
max_connections=100
query_cache_size=0
table_cache=256
tmp_table_size=103M
thread_cache_size=8

myisam_max_sort_file_size=100G
myisam_sort_buffer_size=205M
key_buffer_size=175M
read_buffer_size=64K
read_rnd_buffer_size=256K
sort_buffer_size=256K

innodb_additional_mem_pool_size=7M
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=3498K
innodb_buffer_pool_size=339M
innodb_log_file_size=170M
innodb_thread_concurrency=8





使用CMD命令行程序:
图片32.png

MySQL的命令都在安装目录下的bin里面:(截图有省略)
d:
cd MySQL\bin
dir

图片33.png


使用CMD命令行程序登录MySQL:
D:\MySQL\bin>mysql -u"root" -p"123"
图片34.png
注释:使用的是库管理员root@localhost


查看所有数据库用户及其主机信息:(以下是初始状态)
select user,host from mysql.user;
图片35.png


查看数据库管理员root@localhost的权限:
mysql> show grants for root@localhost;
+-------------------------------------------------------------------------------
---------------------------------------------------------+
| Grants for root@localhost
                                                         |
+-------------------------------------------------------------------------------
---------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*23AE809DDACAF96AF0FD78ED04B6A265E05AA257' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION
                                                         |
+-------------------------------------------------------------------------------
---------------------------------------------------------+
2 rows in set (0.00 sec)

mysql>



查看MySQL的默认字符集:
show variables like '%character%';
show variables like '%collation%';
图片36.png
注意:
character_set_database、character_set_server
collation_database、collation_server

注释:此时数据库的默认字符集为 utf8_general_ci





直接新建一个库,不指定其字符集:
mysql> create database db1;
Query OK, 1 row affected (0.02 sec)

mysql> show create database db1;
+----------+--------------------------------------------------------------+
| Database | Create Database                                              |
+----------+--------------------------------------------------------------+
| db1      | CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+--------------------------------------------------------------+
1 row in set (0.00 sec)

mysql>

注释:此时不指定其字符集的话,创建的库的字符集默认都为 utf8_general_ci





再新建一个库,指定其字符集:
mysql> create database data1 character set utf8 collate utf8_unicode_ci;
Query OK, 1 row affected (0.00 sec)

mysql> show create database data1;
+----------+--------------------------------------------------------------------
--------------------+
| Database | Create Database
                    |
+----------+--------------------------------------------------------------------
--------------------+
| data1    | CREATE DATABASE `data1` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */ |
+----------+--------------------------------------------------------------------
--------------------+
1 row in set (0.00 sec)

mysql>

注释:库data1的字符集为 utf8_unicode_ci 



再次查看数据库里有哪些库:
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| data1              |
| db1                |
| mysql              |
| performance_schema |
| test               |
+--------------------+
6 rows in set (0.00 sec)

mysql>





创建一个数据库用户并授权:

授权数据库用户zhuohua@'%'(密码1234),可以从任意IP进行访问,仅仅对库db1、data1有完全控制的权限:
mysql> grant all on db1.* to zhuohua@'%' identified by '1234';
Query OK, 0 rows affected (0.02 sec)

mysql> grant all on data1.* to zhuohua@'%';
Query OK, 0 rows affected (0.00 sec)


查看数据库用户zhuohua@'%'的权限:
mysql> show grants for zhuohua@'%';
+-------------------------------------------------------------------------------
-------------------------+
| Grants for zhuohua@%
                         |
+-------------------------------------------------------------------------------
-------------------------+
| GRANT USAGE ON *.* TO 'zhuohua'@'%' IDENTIFIED BY PASSWORD '*A4B6157319038724E3560894F7F932C8886EBFCF' |
| GRANT ALL PRIVILEGES ON `db1`.* TO 'zhuohua'@'%'
                         |
| GRANT ALL PRIVILEGES ON `data1`.* TO 'zhuohua'@'%'
                         |
+-------------------------------------------------------------------------------
-------------------------+
3 rows in set (0.00 sec)

mysql>



再次查看所有数据库用户及其主机信息:
图片37.png













############
############

Windows客户端使用SQLyog,远程访问MySQL数据库:

运行 SQLyogEnt.exe ,新建一个连接:
图片38.png
注释:
MySQL服务器的IP地址 192.168.168.129
数据库用户名 zhuohua
密码 1234
端口 3306


SQLyog的主界面:
图片40.png
注释:数据库用户 zhuohua@'%' 可以登录MySQL,只对库db1、data1有完全控制的权限。


使用SQLyog查询编辑器,查看数据库版本:
图片41.png
代码:
SELECT VERSION();



使用SQLyog查询编辑器创建一个表:
图片43.png
代码:
Use data1;

create table t_1(
   id int not null auto_increment,
   name varchar(30) not null,
   shijian1 datetime,
   shijian2 datetime,
   primary key (id)
);


使用SQLyog查看库data1中的表t_1的表结构:
图片44.png



######

使用SQLyog插入记录:(字段id为主键、标识符列,会自动增长,不用写)
Use data1;

insert into t_1 (name,shijian1,shijian2) values ('zhuohua','1987-1-9','1987-1-19');
insert into t_1 (name,shijian1,shijian2) values ('Python','1987-1-9','1987-4-18');

insert into t_1 (name,shijian1,shijian2) values ('李大杰','2018-2-8 8:3:15','2019-3-6 12:30:6');
insert into t_1 (name,shijian1,shijian2) values ('李丽','2018-4-9 18:6:23','2000-06-16 22:03:15');



######

使用SQLyog进行查询,输出表data1.t_1中的所有记录:
SELECT * FROM data1.t_1;
图片45.png



只显示日期部分:
USE data1;
SELECT DATE(shijian1) AS date1,shijian2 FROM t_1;
图片46.png
注释:DATE()函数可以从具体时间中筛选出日期部分。



只显示日期中的年:
Use data1;
SELECT name,YEAR(shijian2) AS yesar2 FROM t_1;
图片47.png



只显示日期中的月:
Use data1;
SELECT name,MONTH(shijian2) AS month2 FROM t_1;
图片48.png



只显示日期中的日:
Use data1;
SELECT name,DAY(shijian2) AS day2 FROM t_1;
图片49.png



查询两个日期之间的相隔天数:( 不足一天的话,返回的结果会是0 )
USE data1;
SELECT NAME,shijian1,shijian2,TIMESTAMPDIFF(DAY,shijian1,shijian2) AS 相隔天数 FROM t_1;
图片50.png
注释:在TIMESTAMPDIFF()函数里,如果第一个日期大于第二个日期,返回的结果会是负数。



查询两个日期之间的相隔月数:( 不足一个月的话,返回的结果会是0 )
USE data1;
SELECT NAME,shijian1,shijian2,TIMESTAMPDIFF(MONTH,shijian1,shijian2) AS 相隔月数 FROM t_1;
图片51.png
注释:在TIMESTAMPDIFF()函数里,如果第一个日期大于第二个日期,返回的结果会是负数。



查询两个日期之间的相隔年数:( 不足一年的话,返回的结果会是0 )
Use data1;
SELECT name,shijian1,shijian2,TIMESTAMPDIFF(YEAR,shijian1,shijian2) AS 相隔年数 FROM t_1;
图片88.png
注释:在TIMESTAMPDIFF()函数里,如果第一个日期大于第二个日期,返回的结果会是负数。



查询两个日期之间相差超过2年的记录:
Use data1;
SELECT name,shijian1,shijian2 FROM t_1 WHERE TIMESTAMPDIFF(YEAR,shijian1,shijian2) > 2
图片52.png

Use data1;
SELECT name,shijian1,shijian2 FROM t_1 WHERE TIMESTAMPDIFF(YEAR,shijian2,shijian1) > 2
图片53.png
注释:这种情况下,在TIMESTAMPDIFF()函数里,第一个日期要小于第二个日期。





只显示时间部分:
USE data1;
SELECT TIME(shijian1) AS time1,shijian2 FROM t_1;
图片54.png
注释:TIME()函数可以从具体时间中筛选出时间部分。


只显示时间中的时:
Use data1;
SELECT name,HOUR(shijian1) AS hour1 FROM t_1;
图片55.png



只显示时间中的分:
Use data1;
SELECT name,MINUTE(shijian1) AS minute1 FROM t_1;
图片56.png



只显示时间中的秒:
Use data1;
SELECT name,SECOND(shijian1) AS second1 FROM t_1;
图片57.png



查询两个时间之间的相隔小时数:( 不足一个小时的话,返回的结果会是0 )
USE data1;
SELECT NAME,shijian1,shijian2,TIMESTAMPDIFF(HOUR,shijian1,shijian2) AS 相隔小时数 FROM t_1;
图片58.png
注释:在TIMESTAMPDIFF()函数里,如果第一个时间大于第二个时间,返回的结果会是负数。



查询两个时间之间相差大于240个小时的记录:
Use data1;
SELECT name,shijian1,shijian2,TIMESTAMPDIFF(HOUR,shijian1,shijian2) AS 相隔小时数 FROM t_1 WHERE TIMESTAMPDIFF(HOUR,shijian1,shijian2) > 240;
图片59.png



查询两个时间之间相差大于或等于240个小时的记录:
Use data1;
SELECT name,shijian1,shijian2,TIMESTAMPDIFF(HOUR,shijian1,shijian2) AS 相隔小时数 FROM t_1 WHERE TIMESTAMPDIFF(HOUR,shijian1,shijian2) >= 240;
图片60.png



查询两个时间之间相差小于3个小时的记录:
Use data1;
SELECT name,shijian1,shijian2,TIMESTAMPDIFF(HOUR,shijian1,shijian2) AS 相隔小时数 FROM t_1 WHERE TIMESTAMPDIFF(HOUR,shijian1,shijian2) < 3;
图片61.png



查询两个时间之间相差小于或等于3个小时的记录:
Use data1;
SELECT name FROM t_1 WHERE TIMESTAMPDIFF(HOUR,shijian1,shijian2) <= 3;
图片62.png





查询两个时间之间的相隔分钟数:
Use data1;
SELECT name,shijian1,shijian2,TIMESTAMPDIFF(MINUTE,shijian1,shijian2) AS 相隔分钟数 FROM t_1;
图片63.png
注释:在TIMESTAMPDIFF()函数里,如果第一个时间大于第二个时间,返回的结果会是负数。



查询两个时间之间的相隔秒钟数:
Use data1;
SELECT name,shijian1,shijian2,TIMESTAMPDIFF(SECOND,shijian1,shijian2) AS 相隔秒钟数 FROM t_1;
图片64.png
注释:在TIMESTAMPDIFF()函数里,如果第一个时间大于第二个时间,返回的结果会是负数。





给用户李丽的字段shijian2加大21年:
USE data1;
UPDATE t_1 SET shijian2 = DATE_ADD(shijian2,INTERVAL 21 YEAR) WHERE NAME = '李丽';

SELECT name,shijian2 FROM t_1;
图片65.png



给用户李丽的字段shijian2减小1年:
Use data1;
update t_1 set shijian2 = DATE_ADD(shijian2,INTERVAL -1 YEAR) WHERE name = '李丽';

SELECT name,shijian2 FROM t_1;
图片66.png



给用户李丽的字段shijian2加大2个月:
Use data1;
update t_1 set shijian2 = DATE_ADD(shijian2,INTERVAL 2 MONTH) WHERE name = '李丽';

SELECT name,shijian2 FROM t_1;
图片67.png



给用户李丽的字段shijian2加大3天:
Use data1;
update t_1 set shijian2 = DATE_ADD(shijian2,INTERVAL 3 DAY) WHERE name = '李丽';

SELECT name,shijian2 FROM t_1;
图片68.png



给用户李丽的字段shijian2减小1小时:
Use data1;
update t_1 set shijian2 = DATE_ADD(shijian2,INTERVAL -1 HOUR) WHERE name = '李丽';

SELECT name,shijian2 FROM t_1;
图片69.png



给用户李丽的字段shijian2减小2分钟:
Use data1;
update t_1 set shijian2 = DATE_ADD(shijian2,INTERVAL -2 MINUTE) WHERE name = '李丽';

SELECT name,shijian2 FROM t_1;
图片70.png



给用户李丽的字段shijian2减小3秒钟:
Use data1;
update t_1 set shijian2 =DATE_ADD(shijian2,INTERVAL -3 SECOND) WHERE name = '李丽';

SELECT name,shijian2 FROM t_1;
图片72.png





根据日期部分作为关键字进行查询:
Use data1;
SELECT * FROM t_1 WHERE DATE(shijian1) = '1987-01-09';
图片73.png
注释:DATE()函数可以从具体时间中筛选出日期部分。


Use data1;
SELECT name AS 姓名, DATE(shijian1) AS date1 FROM t_1 WHERE DATE(shijian1) LIKE '1987-01-%';
图片74.png


Use data1;
SELECT name AS 姓名, DATE(shijian2) AS date2 FROM t_1 WHERE YEAR(shijian2) IN ('1987','2019');
图片75.png


Use data1;
SELECT name AS 姓名, DATE(shijian2) AS date2 FROM t_1 WHERE YEAR(shijian2) BETWEEN '1987' AND '2019';
图片76.png





根据时间部分作为关键字进行查询:
Use data1;
SELECT * FROM t_1 WHERE TIME(shijian1) = '08:03:15';
图片77.png
注释:TIME()函数可以从具体时间中筛选出时间部分。


Use data1;
SELECT name AS 姓名,TIME(shijian1) AS time1 FROM t_1 WHERE TIME(shijian1) = '8:03:15';
图片78.png

Use data1;
SELECT name AS 姓名,TIME(shijian1) AS time1 FROM t_1 WHERE TIME(shijian1) = '08:03:15';
图片79.png
注释:TIME()函数作为关键字时,它的值要写完整。












#######

卸载MySQL:
图片80.png

图片81.png

图片82.png

图片83.png

图片84.png

图片85.png

图片86.png


卸载后,MySQL的原安装目录:
图片87.png





相关文章:
MySQL5.5主从同步
Windows2008R2_IIS+Discuz!7.2
Windows2008R2_Tomcat+JDK+虚拟主机+MySQL

MySQL的SQL语句
MySQL的字符集

Windows2012R2_安装MySQL5.5
MSSQL的SQL语句(日期时间)

Zabbix使用Agent监控Windows的TCP端口和服务状态
Zabbix使用Agent监控Windows进程+问题
Zabbix使用模板监控Windows下的MySQL

返回列表