当前位置:Gxlcms > 数据库问题 > mysql数据库基础

mysql数据库基础

时间:2021-07-01 10:21:17 帮助过:10人阅读

//集体装包rpm -Uvh 包名(支持通配符)

 

主流的数据库软件:MYSQL  ORACLA   BDA  SQL  。。

MYSQL已经被甲骨文公司收购是开源的(但不是完全免费的)  ,其他几个都是闭源的

MYSQL可跨平台 

数据库相同版本是装不上的,需要先卸载,否则会有冲突

公司用的mysql多,红帽光旁里集成的是mariadb(mysql是甲骨文的了)

卸载软不要用yum,要用rpm卸载(忽略依赖关系),不然会误珊服务

mysql-community-client-5.7.17-1.el7.x86_64.rpm

//是提供服务命令的包

mysql-community-server-5.7.17-1.el7.x86_64.rpm

//是提供服务的包

装包如果有依赖关系,看提示,再找包名  //yum list | grep 。。。

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

启动服务初始化会在/var/lib/mysql下生成文件夹及文件

客户端访问数据库服务时传递进程数据文件:/var/lib/mysql/mysql.sock

mysql默认端口:3306

配置文件:/etc/my.cnf

日志文件:/var/log/mysqld.log

pid文件:/var/run/mysqld/mysqld.pid

数据库目录、进程 所有者所属组都是mysql

保证客户端可以通过进程把数据写入数据库里

*默认只允许数据库服务自己访问自己  //其他访问要授权

访问方式:命令行(运维人)、第三方软件图形(程序员用)

                                                                

/etc/my.cof   

# For advice on how to change settings please see

# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

#上面是mysql的官网

[mysqld]

#

# Remove leading # and set to the amount of RAM for the most important data

# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.

# innodb_buffer_pool_size = 128M

#

# Remove leading # to turn on a very important data integrity option: logging

# changes to the binary log between backups.

# log_bin

#

# Remove leading # to set options mainly useful for reporting servers.

# The server defaults are faster for transactions and fast SELECTs.

# Adjust sizes as needed, experiment to find the optimal values.

# join_buffer_size = 128M

# sort_buffer_size = 2M

# read_rnd_buffer_size = 2M

datadir=/var/lib/mysql                   #数据库的目录

socket=/var/lib/mysql/mysql.sock        #客户端访问数据库服务时传递进程数据信息的伪文件(服务启动时才有)

 

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

 

==log-error=/var/log/mysqld.log           #错误日志

==pid-file=/var/run/mysqld/mysqld.pid    #指定文件保存运行服务时进程的pid号

    

 

 

初始密码在/var/log/mysqld.log 里面

#grep password /var/log/mysqld.log    //在:后面

[root@client mysql]# mysql -hlocalhost -uroot -p ‘q-whx%4S(sOc‘

第一次进去要改密码:>alter user root@”localhost” identified by “123qqq...A”;  //新版密码有要求

>exit;

改过退出再进去就可以看库了

#mysql -hlocalhost -uroot -p‘123qqq...A‘      //密码复杂度可以修改

  mysql> show databases;

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

|        Database           |

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

| information_schema |

|           mysql               |

| performance_schema|

|             sys                  |

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

4 rows in set (0.00 sec)

 

 

修改密码复杂度:

mysql> show variables like "%password%";

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

|          Variable_name                               | Value  |

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

| default_password_lifetime             | 0      |

| disconnect_on_expired_password      | ON     |

| log_builtin_as_identified_by_password  | OFF    |

| mysql_native_password_proxy_users   | OFF    |

| old_passwords                         | 0      |

| report_password                       |        |

| sha256_password_proxy_users         | OFF    |

| validate_password_check_user_name   | OFF    |

| validate_password_dictionary_file       |        |

| validate_password_length              | 8      |  //密码长度,改成6就是6位数

| validate_password_mixed_case_count   | 1      |

| validate_password_number_count       | 1      |

| validate_password_policy               | MEDIUM |   //密码复杂度,改成0就是降低,会变成LOW

| validate_password_special_char_count  | 1      |

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

14 rows in set (0.00 sec)

 

改密码复杂度(无要求)

mysql> set global validate_password_policy=0;

Query OK, 0 rows affected (0.00 sec)

改长度6位数

mysql> set global validate_password_length=6;

Query OK, 0 rows affected (0.00 sec)

 

即可改简单密码

mysql> alter user root@"localhost" identified by "123456";

Query OK, 0 rows affected (0.00 sec)

 

[root@client mysql]# vim /etc/my.cnf   //写入配置文件中永久配置,不然重启服务会恢复设置,写在[mysqld]下面

[mysqld]

validate_password_policy=0

validate_password_length=6

 

Root]#Systemctl restart mysqld    //重启验证

 

[root@client mysql]# mysql -h localhost -u root -p123456   //密码可用

 

 

 

 

数据库就相当于文件夹

也可以直接在/varmysql> 也可以直接在/var/lib/mysql 下创建目录要设置属主和组为mysql)

运行环境的时候网站服务和数据库服务一起用(分两个服务器单独使用)

 

创建库不能用关键字,区分大小写,不能用特殊符号

 

库管理命令:

Show databases;                      //显示已有的库

Use han;                               //切换库

show tables;   //查看已经有的表

Create database han;             //创建库

Show tables;                    //显示已有的表

Drop database han;           //删除库

select database();                 //现实当前所在的库

 

创建库和表

mysql> create database teadb;      

mysql> create table teadb.stuinfo(         //表名为stuinfo,也可写相对路径直接写stuinfo

-> name char(20),                    //名称和设定字符

    -> age int,                            //名称  类型为数字

    -> homeaddr char(50)

    -> );

Query OK, 0 rows affected (0.31 sec)

//先创建库再创建表

 

mysql> select * from teadb.stuinfo;         //查看表信息内容

Empty set (0.01 sec)

 

mysql> insert into teadb.stuinfo values("bob",19,"shenzhen"),("tom",21,"guangzhou");

Query OK, 2 rows affected (0.03 sec)

Records: 2  Duplicates: 0  Warnings: 0

//创建记录   //values:值    //字符要引号

 

mysql> select * from teadb.stuinfo;           //再查看记录

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

| name   | age  | homeaddr    |

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

| bob      |   19     | shenzhen   |

| tom      |   21     | guangzhou |

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

2 rows in set (0.00 sec)

 

mysql> update teadb.stuinfo set age=35;               //批量改表

 

mysql> update teadb.stuinfo set age=18 where name="bob";    //单独改表

 

mysql> delete from teadb.stuinfo where name="bob";   //删除name=bob的表

 

mysql> delete from teadb.stuinfo;                       //删除所有的表内容

 

mysql> desc teadb.stuinfo;                              //查看表结构

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

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

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

| name         | char(20) | YES  |           | NULL    |         |

| age           | int(11)      | YES  |          | NULL    |         |

| homeaddr | char(50)  | YES  |          | NULL     |         |

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

列名         字段类型        约束条件

 

mysql> drop tables teadb.stuinfo;         //删除表,库还在

 

 

 

字符集 : 中文字符的集合

gb2312 :

utf8  : 可以写的汉字更多

 

mysql> use teadb;

创建表

mysql> create table t1(name char(10));

mysql> create table t2(name char(10));

 

mysql> show tables;   //查看已经有的表

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

| Tables_in_teadb |

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

|          t1              |

|          t2              |

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

 

mysql> show create table t2;            //查看表的字符类型

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

| Table | Create Table                                                                              |

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

| t2    | CREATE TABLE `t2` (

  `name` char(10) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1 |    //默认字符类型

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

1 row in set (0.00 sec)

 

mysql> create table 学生表(姓名 char(20),性别 char(6))DEFAULT CHARSET=utf8;                //创建中文表,指定字符类型为utf8

 

mysql> insert into 学生表 values("李斯","男"),("赵高","女");  //创建记录

 

mysql> select * from 学生表;

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

| 姓名   | 性别   |

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

| 李斯   | 男     |

| 赵高   | 女     |

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

2 rows in set (0.00 sec)

 

 

浮点型

创建t3表

mysql> create table t3(

    -> age tinyint unsigned ,

    -> pay float(7,2)

    -> );

Query OK, 0 rows affected (0.22 sec)

//float(7,2)7位数2位小数

范围99999.99~ -99999.99

mysql> insert into t3 values(18,38000.88);

mysql> select * from t3;

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

| age  |      pay      |

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

|   18 |  38000.88 |

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

1 row in set (0.00 sec)

 //存什么数要考虑好,超过设置最大宽度存不上.

 

字符类型

一个英文字母就是一个字符

变长:输入多少就用多少不补空格(需要计算,会变慢)

varchar必须指宽度,否则报错

用的多的是char,char不指宽度默认宽度是1,速度快

 

mysql> create table t4(name char(4),homedir varchar(6));

mysql> desc t4;                            //查看表结构

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

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

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

| name   | char(4)        | YES  |       | NULL      |           |

| homedir | varchar(6) | YES  |        | NULL     |          |

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

//存超过设定的字符会报错

 

 

时间的用法

mysql> create table t5(name char(10),

    -> birthday date,

    -> start year,

    -> uptime time,

    -> party datetime

    -> );

 

mysql> insert into t5 values("bob",19930702,1993,083000,20181015203000);

 

mysql> select * from t5;

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

| name | birthday    | start    | uptime   |           party               |

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

| bob  | 1993-07-02 |  1993  | 08:30:00 | 2018-10-15 20:30:00 |

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

//时间类型赋值一一对应

 

枚举

mysql> create table t6(

    -> name char(10),

    -> likes set("eat","sleep","game","file"),

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

//设定值

mysql> insert into t6 values("bob","eat,sleep","boy");            //赋值,如果赋没有的值会报错

 

mysql> select * from t6;

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

| name | likes     | sex |

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

| bob  | eat,sleep | boy |

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

 

 

mysql数据库基础

标签:into   数据库软件   开源   mysql服务器   配置   要求   软件   ike   user   

人气教程排行