• 【MySQL】(1))连接方式+存储引擎+字符集


    目录

    一. mysql连接

    1.1 启动/连接问题

    1.2 连接方式

    1.3 远程连接(含创建用户+授权)

    1.4 客户端连接工具

    1.5 查看有哪些用户远程连接MySQL

    二、初步了解MySQL

    2.1 简单的sql语句

    2.2 存储引擎

    2.3 字符集

            2.3.1 继承

    2.4 DBMS

    三、MySQL进程之间的关系


    一. mysql连接

    1.1 启动/连接问题

    mysql服务启动不了,如何解决?

            1.看mysql的配置文件,是否错误的配置

            2.日志--》有用的信息--》找ERROR提醒

    从windows里不能连接到linux里的mysql,如何解决?如果判断故障?

            1.windows的ip设置问题--》windows的网络问题

                    ping linux服务器的ip地址 ,检查网络是否通畅

                    linux 服务器的网络问题

            2.linux里的防火墙是否开启

                    iptables -L(查看防火墙规则)

                    service firewalld stop(关闭防火墙)

            3.检查下mysql服务是否开启

                    ps aux|grep mysqld

            4.检查下端口号是否修改

                    netstat -anlput|grep mysqld

            5.连接的用户是否有授权

                    grant

            6.云服务器的安全组(使用的是云服务器)

    1.2 连接方式

    1.文件socket

            只能在本机

            是实现一台电脑里的不同进程之间通信的文件

    [root@wudang-mysql-2 mysql]# mysql -uroot -p'Sanchuang1234#' -S /data/mysql/mysql.sock

    在/etc/my.cnf配置文件里打开如下配置,在使用mysql客户端命令连接的时候,就不需要接-S指定socket文件的路径了

    /etc/my.cnf存放mysql的配置文件

    1. [client]
    2. socket=/data/mysql/mysql.sock

    2.网络socket

            是ip+port --》格式ip:port 192.168.0.163:3309

            网络中通过ip地址找到对方 ,实现不同的电脑之间的不同的进程之间的通信的

    [root@mysql-2 ~]# mysql -h 192.168.0.163 -P3309 -ucali -p'Sanchuang1234#'

            -h 指定主机名(ip) host

            -P port 端口 (大写)

    1.3 远程连接(含创建用户+授权)

    创建用户

    'fyy'@'%' 表示用户fyy可以从任何地方连接

    identified by '123sc' 表示该用户的密码为123 sc

    1. root@(none) 15:57 mysql>create user 'fyy'@'%' identified by '123sc';
    2. Query OK, 0 rows affected (0.00 sec)

    授权

    all 表示所有权限 -- 不包括给其他用户授权

    on *.* 前一个*表示所有的库,后一个*表示所有的表

    1. root@(none) 15:58 mysql>grant all on *.* to 'fyy'@'%';
    2. Query OK, 0 rows affected (0.00 sec)

    查看用户的具体信息(可看到权限)

            \G 逐行显示

    root@(none) 21:46 mysql>select * from mysql.user\G;

    测试是否可以在其他主机连接

    1. [root@nginx-kafka01 ~]# mysql -h 192.168.182.129 -ufyy -p123sc
    2. Welcome to the MariaDB monitor. Commands end with ; or \g.
    3. Your MySQL connection id is 8
    4. Server version: 5.7.37 MySQL Community Server (GPL)
    5. Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
    6. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    7. MySQL [(none)]>

    1.4 客户端连接工具

    1. Windows

    SQLyog、Navicat、mysql workbench(官方)

    2. Linux

    mysql

    1.5 查看有哪些用户远程连接MySQL

    show processlist ==> 在MySQL中使用

    1. root@(none) 23:43 mysql>show processlist;
    2. +----+------+-----------+------+---------+------+----------+------------------+
    3. | Id | User | Host | db | Command | Time | State | Info |
    4. +----+------+-----------+------+---------+------+----------+------------------+
    5. | 2 | root | localhost | NULL | Query | 0 | starting | show processlist |
    6. +----+------+-----------+------+---------+------+----------+------------------+
    7. 1 row in set (0.00 sec)

    二、初步了解MySQL

    MySQL的库本质上是一个目录,表本质上是文件

    2.1 简单的sql语句

    创建库

    1. root@(none) 16:14 mysql>create database sc;
    2. Query OK, 1 row affected (0.00 sec)
    3. root@(none) 16:15 mysql>show databases;
    4. +--------------------+
    5. | Database |
    6. +--------------------+
    7. | information_schema |
    8. | mysql |
    9. | performance_schema |
    10. | sc |
    11. | sys |
    12. +--------------------+
    13. 5 rows in set (0.00 sec)

    查看创建数据库的sql语句

            > 可以看到该数据库指定的字符集(utf8)

    1. root@sc 15:24 mysql>show create database sc;
    2. +----------+-------------------------------------------------------------+
    3. | Database | Create Database |
    4. +----------+-------------------------------------------------------------+
    5. | sc | CREATE DATABASE `sc` /*!40100 DEFAULT CHARACTER SET utf8 */ |
    6. +----------+-------------------------------------------------------------+
    7. 1 row in set (0.00 sec)

    查看:

     >在mysql中也可以看到

    1. root@sc 15:26 mysql>system ls /data/mysql;
    2. auto.cnf ibdata1 mysqlsc
    3. ca-key.pem ib_logfile0 mysql.sockserver-cert.pem
    4. ca.pem ib_logfile1 mysql.sock.lockserver-key.pem
    5. client-cert.pem ibtmp1 performance_schemasys
    6. client-key.pem lihua private_key.pemting-mysql.err
    7. ib_buffer_pool localhost.localdomain.err public_key.pemting-mysql.pid

    创建表

    1. root@(none) 16:18 mysql>use sc;
    2. Database changed
    3. root@sc 16:19 mysql>show tables;
    4. Empty set (0.00 sec)
    5. root@sc 16:19 mysql>create table t1(id int,name varchar(20));
    6. Query OK, 0 rows affected (0.01 sec)
    7. root@sc 16:20 mysql>show tables;
    8. +--------------+
    9. | Tables_in_sc |
    10. +--------------+
    11. | t1 |
    12. +--------------+
    13. 1 row in set (0.00 sec)

    查看

    db.opt -- 存放库使用的字符集和校对规则

    t1.frm -- 存放t1表的表结构(frame)

    t1.idb -- 存放t1表的数据(使用innodb存储引擎)(innodb:一个软件,用来存取数据,在内存和磁盘之间)(innodb data)

    1. [root@localhost mysql]# cd sc
    2. [root@localhost sc]# ls
    3. db.opt t1.frm t1.ibd

    查看表结构

    1. # 第一种
    2. root@sc 16:20 mysql>desc t1;
    3. +-------+-------------+------+-----+---------+-------+
    4. | Field | Type | Null | Key | Default | Extra |
    5. +-------+-------------+------+-----+---------+-------+
    6. | id | int(11) | YES | | NULL | |
    7. | name | varchar(20) | YES | | NULL | |
    8. +-------+-------------+------+-----+---------+-------+
    9. 2 rows in set (0.01 sec)
    10. # 第二种
    11. root@sc 15:23 mysql>show create table t1;
    12. +-------+-------------------------------------------------------------------------------------------------------------------------+
    13. | Table | Create Table |
    14. +-------+-------------------------------------------------------------------------------------------------------------------------+
    15. | t1 | CREATE TABLE `t1` (
    16. `id` int(11) DEFAULT NULL,
    17. `name` varchar(20) DEFAULT NULL
    18. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
    19. +-------+-------------------------------------------------------------------------------------------------------------------------+
    20. 1 row in set (0.00 sec)

    2.2 存储引擎

    mysql体系结构图

     

    存储引擎结构图

     存储引擎和表是捆绑的

    存储引擎是一个软件,用来把数据从内存写到磁盘或从磁盘读到内存

    查看表所使用的存储引擎

    1. root@sc 16:38 mysql>show create table t1;
    2. +-------+-------------------------------------------------------------------------------------------------------------------------+
    3. | Table | Create Table |
    4. +-------+-------------------------------------------------------------------------------------------------------------------------+
    5. | t1 | CREATE TABLE `t1` (
    6. `id` int(11) DEFAULT NULL,
    7. `name` varchar(20) DEFAULT NULL
    8. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
    9. +-------+-------------------------------------------------------------------------------------------------------------------------+
    10. 1 row in set (0.00 sec)

    指定表的存储引擎

    1. root@sc 16:48 mysql>create table t2(id int,name varchar(20)) engine=myisam;
    2. Query OK, 0 rows affected (0.00 sec)
    3. root@sc 16:49 mysql>show create table t2;
    4. +-------+-------------------------------------------------------------------------------------------------------------------------+
    5. | Table | Create Table |
    6. +-------+-------------------------------------------------------------------------------------------------------------------------+
    7. | t2 | CREATE TABLE `t2` (
    8. `id` int(11) DEFAULT NULL,
    9. `name` varchar(20) DEFAULT NULL
    10. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
    11. +-------+-------------------------------------------------------------------------------------------------------------------------+
    12. 1 row in set (0.00 sec)

    t2.frm 存放t2的表结构

    t2.MYD 存放数据,存储引擎为myisam

    t2.MYI 存放索引(index)

    1. [root@localhost sc]# ls
    2. db.opt t1.frm t1.ibd t2.frm t2.MYD t2.MYI

    查看MySQL含有的存储引擎

    1. root@sc 16:37 mysql>show engines;
    2. +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
    3. | Engine | Support | Comment | Transactions | XA | Savepoints |
    4. +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
    5. | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
    6. | CSV | YES | CSV storage engine | NO | NO | NO |
    7. | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
    8. | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
    9. | MyISAM | YES | MyISAM storage engine | NO | NO | NO |
    10. | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
    11. | ARCHIVE | YES | Archive storage engine | NO | NO | NO |
    12. | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
    13. | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
    14. +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
    15. 9 rows in set (0.00 sec)

    四种常见的存储引擎

    1. innodb存储引擎的特点:支持事务,支持行级别的锁,支持外键

    2. memory :适合出报表,不需要永久保存的数据,临时表,退出即删除

    3. csv

    4. myisam

    2.3 字符集

    字符集指的是某个范围字符集的编码规则


    查询你的MySQL支持哪些字符集

    1. # 很多公司使用utf8mb4
    2. root@sc 15:27 mysql>show character set;
    3. | Charset | Description | Default collation | Maxlen |
    4. # yum安装默认是拉丁
    5. | latin1 | cp1252 West European | latin1_swedish_ci | 1 |
    6. | utf8 | UTF-8 Unicode | utf8_general_ci | 3 |
    7. | utf8mb4 | UTF-8 Unicode | utf8mb4_general_ci | 4 |

    utf8_general_ci 其中ci为case ignore,字符排序时不区分大小写

    1. [root@ting-mysql lihua]# cat db.opt
    2. default-character-set=utf8
    3. default-collation=utf8_general_ci
    4. # collation 校对规则
    5. (排序时)

    查看你正在使用哪些字符集

    1. # show variables 查看mysql中的所有变量
    2. # like 类似于过滤,%:通配符
    3. root@(none) 14:27 mysql>show variables like '%CHARACTER%';
    4. +--------------------------+----------------------------------+
    5. | Variable_name | Value |
    6. +--------------------------+----------------------------------+
    7. | character_set_client | utf8 |
    8. | character_set_connection | utf8 |
    9. | character_set_database | utf8 |
    10. | character_set_filesystem | binary |
    11. | character_set_results | utf8 |
    12. | character_set_server | utf8 |
    13. | character_set_system | utf8 |
    14. | character_sets_dir | /usr/local/mysql/share/charsets/ |
    15. +--------------------------+----------------------------------+
    16. 8 rows in set (0.01 sec)

    查看系统使用的字符集

    1. [root@ting-mysql ~]# locale
    2. LANG=zh_CN.UTF-8
    3. LC_CTYPE="zh_CN.UTF-8"
    4. LC_NUMERIC="zh_CN.UTF-8"
    5. LC_TIME="zh_CN.UTF-8"
    6. LC_COLLATE="zh_CN.UTF-8"
    7. LC_MONETARY="zh_CN.UTF-8"
    8. LC_MESSAGES="zh_CN.UTF-8"
    9. LC_PAPER="zh_CN.UTF-8"
    10. LC_NAME="zh_CN.UTF-8"
    11. LC_ADDRESS="zh_CN.UTF-8"
    12. LC_TELEPHONE="zh_CN.UTF-8"
    13. LC_MEASUREMENT="zh_CN.UTF-8"
    14. LC_IDENTIFICATION="zh_CN.UTF-8"
    15. LC_ALL=

    查看某个库正在使用的字符集

    1. root@(none) 14:35 mysql>show create database lihua;
    2. +----------+----------------------------------------------------------------+
    3. | Database | Create Database |
    4. +----------+----------------------------------------------------------------+
    5. | lihua | CREATE DATABASE `lihua` /*!40100 DEFAULT CHARACTER SET utf8 */ |
    6. +----------+----------------------------------------------------------------+
    7. 1 row in set (0.00 sec)

            2.3.1 继承

    继承(默认字符集):服务器-库-表-列(库继承服务器的字符集,……)

    【注:只有文本类型的数据,会牵扯到字符集(varchar、char、text)】

    也可以指定字符集,指定的字符集优先级高于继承

    1. # 指定库的字符集(命令使用的是简写)
    2. root@(none) 14:35 mysql>create database xiaoxi default charset=utf8mb4;
    3. Query OK, 1 row affected (0.00 sec)
    4. root@(none) 14:42 mysql>use xiaoxi;
    5. Database changed
    6. root@xiaoxi 14:42 mysql>show tables;
    7. Empty set (0.00 sec)
    8. root@xiaoxi 14:42 mysql>create table t1(id int, name varchar(20));
    9. Query OK, 0 rows affected (0.00 sec)
    10. # 创建表不指定字符集,默认继承库
    11. root@xiaoxi 14:42 mysql>show create table t1;
    12. +-------+----------------------------------------------------------------------------------------------------------------------------+
    13. | Table | Create Table |
    14. +-------+----------------------------------------------------------------------------------------------------------------------------+
    15. | t1 | CREATE TABLE `t1` (
    16. `id` int(11) DEFAULT NULL,
    17. `name` varchar(20) DEFAULT NULL
    18. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |
    19. +-------+----------------------------------------------------------------------------------------------------------------------------+
    20. 1 row in set (0.00 sec)
    21. # 指定字符集
    22. root@xiaoxi 14:43 mysql>create table t2(id int) default character set=utf8;
    23. Query OK, 0 rows affected (0.01 sec)
    24. # 指定字符集的优先级高于默认继承的字符集
    25. root@xiaoxi 14:44 mysql>show create table t2;
    26. +-------+--------------------------------------------------------------------------------------+
    27. | Table | Create Table |
    28. +-------+--------------------------------------------------------------------------------------+
    29. | t2 | CREATE TABLE `t2` (
    30. `id` int(11) DEFAULT NULL
    31. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
    32. +-------+--------------------------------------------------------------------------------------+
    33. 1 row in set (0.00 sec)

    2.4 DBMS

    database management system

    mysql就是一个DBMS:数据库管理系统(管理数据库的软件)

     

    DBMA的使用目的:

            1. 文件数量过多,查询不方便

            2. 跨机器查询不方便

            3. 并发的控制

    三、MySQL进程之间的关系

    mysqld_safe是mysqld的父进程,mysqld起了26个线程

     mysqld_safe会监督mysqld,一旦mysqld挂掉,就会立刻重启一个mysqld

    1. [root@ting-mysql ~]# ps aux|grep mysqld
    2. root 988 0.0 0.0 115744 1848 ? S 22:45 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/ting-mysql.pid
    3. mysql 1820 2.4 11.6 1543940 216756 ? Sl 22:57 0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=ting-mysql.err --open-files-limit=8192 --pid-file=/data/mysql/ting-mysql.pid --socket=/data/mysql/mysql.sock --port=3306
    4. root 1850 0.0 0.0 112828 984 pts/0 S+ 22:58 0:00 grep --color=auto mysqld
    5. [root@ting-mysql ~]# kill -9 1820
    6. [root@ting-mysql ~]# ps aux|grep mysqld
    7. root 988 0.0 0.0 115744 1848 ? S 22:45 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/ting-mysql.pid
    8. mysql 1866 20.0 11.3 1412936 211772 ? Sl 22:58 0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=ting-mysql.err --open-files-limit=8192 --pid-file=/data/mysql/ting-mysql.pid --socket=/data/mysql/mysql.sock --port=3306
    9. root 1896 0.0 0.0 112828 988 pts/0 S+ 22:58 0:00 grep --color=auto mysqld

  • 相关阅读:
    高性能计算(HPC)存储高校科研应用分析
    第一本Docker书,带你走进微服务架构的奇妙世界!手撕面试官
    MyBatis中的ResultMap有什么作用
    143. 重排链表
    索引的数据结构(2)
    智慧医院的建设包括哪些方面?医院数字孪生信息化建设标准方案
    我赢助手之爆款内容创作:这样的内容绝对上不了推荐,看你中招了么?
    Prometheus系列(4)之Springboot集成Micrometer的JVM监控
    【C语言】利用数组处理批量数据(一维数组和二维数组)
    30C++编程提高篇-----1、函数模板原理
  • 原文地址:https://blog.csdn.net/qq_51275515/article/details/126519651