开源数据库MySQL 8.0 OCP认证精讲视频、环境和题库 之三 选项、变量

news/2024/12/13 4:33:12/

选项文件:默认/etc/my.cnf
可以通过以下选项,指定选项文件:
-defaults-file:指定选项文件
例如:mysql--defaults-file=/etc/my.cnf
-no-defaults:不读任何选项文件,所有选项需要在命令行中指定
-defaults-extra-file:除了默认的选项文件之外,读该选项文件
my_print_defaults:列出所有被读到的选项文件中的选项组
my_print_defaults mysqld
mysql--print-default smysql

隐藏登录信息,实现免密码登录


.mylogin.cn文件:二进制,加密,位于当前操作系统用户的HOME目录

选项文件:默认/etc/my.cnf
可以通过以下选项,指定选项文件:
-defaults-file:指定选项文件
例如:mysql--defaults-file=/etc/my.cnf
-no-defaults:不读任何选项文件,所有选项需要在命令行中指定
-defaults-extra-file:除了默认的选项文件之外,读该选项文件
my_print_defaults:列出所有被读到的选项文件中的选项组
my_print_defaults mysqld
mysql--print-default smysql


隐藏登录信息,实现免密码登录

.mylogin.cn文件:二进制,加密,位于当前操作系统用户的HOME目录

[root@student ~]# mysql_config_editor  --help
mysql_config_editor  Ver 8.0.13 for linux-glibc2.12 on x86_64 (MySQL Community Server - GPL)
Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

MySQL Configuration Utility.
Usage: mysql_config_editor [program options] [command [command options]]
  -#, --debug[=#]     This is a non-debug version. Catch this and exit.
  -?, --help          Display this help and exit.
  -v, --verbose       Write more information.
  -V, --version       Output version information and exit.

Variables (--variable-name=value)
and boolean options {FALSE|TRUE}  Value (after reading options)
--------------------------------- ----------------------------------------
verbose                           FALSE

Where command can be any one of the following :
       set [command options]     Sets user name/password/host name/socket/port
                                 for a given login path (section).
       remove [command options]  Remove a login path from the login file.
       print [command options]   Print all the options for a specified
                                 login path.
       reset [command options]   Deletes the contents of the login file.
       help                      Display this usage/help information.

[root@student ~]# mysql_config_editor  set --login_path=client --user=root --password --host=localhost --port=3306
Enter password: 
会在当前用户HOME文件夹下创建 一个隐藏二进制文件

 [root@student ~]# ls -al .mylogin.cnf
-rw------- 1 root root 156 Oct 12 21:37 .mylogin.cnf
[root@student ~]# 

[root@student ~]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 18
Server version: 8.0.13 MySQL Community Server - GPL

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 
 


system variables 
选项与变量
相同点:可以在命令行指定,在选项文件中指定
不同点:
   选项:
        任何可执行文件都有选项,客户端,mysqld
        有些选项有值 ,有些选项没有值
        在命令的一次执行范围内,选项不可改变量
   变量:
        用在服务器端,用来 对服务器进行设置
        所有变量都有值,一开始都有默认值
        变量可以动态修改
        
变量的作用范围
    global:变量针对整个mysql生效
    session :只针对当前会话
mysql> show variables; 列出所有的变量;
mysql>     show variables like '变量名';
mysql> show  variables like '%变量%';
mysql> select @@global.autocommit;   查看全局变量autocommit; 
mysql>select @@session.autocommit;         查看会话级变量autocommit;

mysql> show global variables like 'autocommit'; 
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | ON    |
+---------------+-------+
1 row in set (0.00 sec)

  
变量的设置:set 命令
set  global 变量=变量值 
set  session 变量=变量值 
 
 变量的设置:
 1、global变量 : 比如 max_connections
     set global  max_connections=1000;在一个会话中修改后,其它会话中可以看到结果 ;
     set max_connections=1000;出错;
     set session max_connections=1000; 出错;
     
 2、有些变量既有golbal作用,又有session作用范围,比如autocommit,sql_mode,wait_timeout
    set global autocommit=0 ;修改结果在新会话中生效,在现存的会话中不生效
    select @@global.autocommit ,@@session.autocommit;
    set session wait_timeout=30000;修改结果仅在当前会话中生效;
3、有些变量只有sessoin作用范围,比如    

变量的持久性
    通过set命令修改的变量仅对mysqld的本次启动有效;
    解决方法
    1、把变量放在选项文件中
    2、执行命令set prersist 变量=变量值 ,修改结果被写入文件/var/lib/mysql/mysqld-auto.cnf或
       datadir目录中,其格式为json;    
       仅针对global变量
       
 mysql> show  variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 151   |
+-----------------+-------+
1 row in set (0.00 sec)

mysql> set global  max_connections=1000;
mysql> 
mysql> show  variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 1000  |
+-----------------+-------+
1 row in set (0.00 sec)

mysql> 
mysql> show variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | ON    |
+---------------+-------+
1 row in set (0.00 sec)

mysql> set global autocommit=0;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | ON    |
+---------------+-------+
1 row in set (0.00 sec)


mysql> set global autocommit=0;  在新会话中生效;
mysql> exit;
[root@student ~]# mysql

mysql> show variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit    | OFF   |
+---------------+-------+
1 row in set (0.00 sec)
mysql> 

会话级变量的设置
    mysql> set session wait_timeout=2009;  只有在当前会话才生效;
    Query OK, 0 rows affected (0.00 sec)

    mysql> show variables like 'wait_timeout';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | wait_timeout  | 2009  |
    +---------------+-------+
    1 row in set (0.00 sec)

    mysql> 

mysqladmin工具:用来管理mysqld服务,格式:
    MySQLadmin 选项  命令
    # mysqladmin --help;
    [root@student ~]# mysqladmin -uroot -pOra_123  status
    [root@student ~]# mysqladmin -uroot -pOra_123  ping
    [root@student ~]# mysqladmin -uroot -pOra_123  shutdown
    [root@student ~]# mysqladmin -uroot -pOra_123  version
    mysql> select version();
   [root@student ~]# mysqladmin -uroot -pOra_123   password
   [root@student ~]# mysqladmin -uroot -pOra_123   create   db_1
   [root@student ~]# mysqladmin -uroot -pOra_123   drop     db-1

mysqld进程:多线程

数据文件:被划分为大小相同的page,page大小通过变量innod


    mysqld服务实现了三层功能:
    1、connection层
        启动connection线程
        提供通信协议
        对用户的登录进行验证
    2、SQL层
       分析、检查SQL的语法格式,把SQL转化为二进制代码
       autthorization:检查当前用户对表是否有相太的权限
       优化:针对SQL产生最佳的执行计划。
       执行SQL。
       产生日志,写入日志缓冲区。
    3、storage层
        实现数据的存储
        存储引擎:
            数据在存储介质中如何存储
            当用户访问数据时,数据如何从介质读入内存
            数据在内存中如何被访问
            内存中被修改的数据如何被写的内存


通信协议:
    TCP/IP:        不同操作系统,本地连接,远程连接
    socket:        UNIX/Linux本地连接
    shared memory: windows系统,本地连接 
    named pipe   :windows系统,本地连接 

登录有关的选项:
    -u 指定用户名,默认为root用户
    -h 指定数据库服务器的IP地址,默认为localhost
    -p 指定password
    -P 指定服务器的PORT,默认为3306
# mysql -pOra_123
    
ip地址:
    1、localhost:
        本次使用socket通讯,可以进一步指定socket文件
        mysql> status;
        --------------
        mysql  Ver 8.0.13 for linux-glibc2.12 on x86_64 (MySQL Community Server - GPL)

        Connection id:        16
        Current database:    
        Current user:        root@localhost
        SSL:            Not in use
        Current pager:        stdout
        Using outfile:        ''
        Using delimiter:    ;
        Server version:        8.0.13 MySQL Community Server - GPL
        Protocol version:    10
        Connection:        Localhost via UNIX socket
        
        mysql> show variables like 'socket';
        +---------------+------------------------+
        | Variable_name | Value                  |
        +---------------+------------------------+
        | socket        | /data/mysql/mysql.sock |
        +---------------+------------------------+
        1 row in set (0.00 sec)

        # mysql -pOra_123  -S  /data/mysql/mysql.sock    #指定用socket协议
 
        #mysql -pOra_123 --protocol=tcp                  #指定用tcp协议
        mysql> status
        --------------
        mysql  Ver 8.0.13 for linux-glibc2.12 on x86_64 (MySQL Community Server - GPL)
         ...
        Server version:        8.0.13 MySQL Community Server - GPL
        Protocol version:    10
        Connection:        localhost via TCP/IP
        ...
    
    2、127.0.0.1
       本次登录使用tcp通信,可以进一步指定服务器的端口。
       端口的查看:
       mysql> show variables like 'port';  
       # mysql -uroot -pOra_123 -h127.0.0.1 -P 3306
        mysql> status
        --------------
        ...
        Connection:        127.0.0.1 via TCP/IP
        ...
        TCP port:        3306
        ...
    3、有效的IP
       在mysql中执行status命令验证连接情况
       用户帐号:用户名称@ip地址:
       # mysql -uroot -pOra_123 -h 192.168.11.222
        mysql: [Warning] Using a password on the command line interface can be insecure.
        ERROR 1130 (HY000): Host 'student' is not allowed to connect to this MySQL server
    
    
        mysql> select user,host from user;
        +------------------+-----------+
        | user             | host      |
        +------------------+-----------+
        | mysql.infoschema | localhost |
        | mysql.session    | localhost |
        | mysql.sys        | localhost |
        | root             | localhost |
        +------------------+-----------+
        4 rows in set (0.00 sec)

rpm格式安装mysqld服务的启动/关闭:root用户
systemctl start  mysqld 
systemctl status mysqld 
systemctl stop   mysqld 
如何用普通用户启用和关闭mysql
1、在操作系统中对mysql进行解决
   cat /etc/passwd |grep mysql
   systemctl stop   mysqld 
   usermod -d /home/mysql -s /bin/bash mysql
   mkdir /home/mysql
   chown mysql:mysql /home/mysql
   
   password mysql    #输入密码
2、以mysql用户登录操作系统
    su  - mysql
    启动mysqld
    mysqld --defaults-file=/etc/my.cnf &
    mysql用户在mysql数据库要创建
    mysqladmin -umysql -pmysql ping
    mysqladmin -umysql -pmysql shutdown
    
二进制安装 
systemctl start   mysql
systemctl status  mysql
systemctl stop    mysql

rpm格式mysql的弊端
1、处理安全考虑,生产系统不允许安装rpm格式
2、 mysql服务的启动,关闭需要用root用户
 

rpm格式启动、关闭:mysqld
root用户:
systemctlstartmysqld
systemctlstatusmysqld
systemctl stopmysqld
普通用户(如mysql用户):
mysqid --defaults-file=/etc/my.cnf&
mysqladmin -u -p.. shutdown
mysqladmin -u.. -p.. ping
mysqladmin-u.. -p.. status

绿色版:
编辑选项文件
mysqld--defaults-file=/mysql80/mysqld.cnf--initialize
mysqld--defaults-file=/mysql80/mysqld.cnf&
查看初始密码
mysqladmin-u..-p.shutdown
mysqladmin -u.. -p.. ping
mysqladmin-u..-p..status
 


http://www.ppmy.cn/news/1152411.html

相关文章

计算机毕业设计选什么题目好?springboot 试题库管理系统

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

sql注入(5), sqlmap工具

sql注入, sqlmap工具 请注意,在实际操作中使用sqlmap测试和利用SQL注入等安全漏洞应始终符合法律法规和道德准则,并且需要在拥有明确授权的情况下进行。在没有获得适当授权的情况下对任何系统或网络进行渗透测试都是非法的。 sqlmap是由python开发的测…

boost Geometry

boost::Geometry boost作为C中最常用的第三方库,Geometry库里面拥有大量的开源算法。 函数作用get获取几何图形(通常为点)的坐标值get (with index)获取框或段的坐标值set设置几何图形(通常为点)的坐标值set (with i…

MySQL报错:unknown collation: ‘utf8mb4_0900_ai_ci‘

问题描述 将MySQL8.0数据库sql导入MySQL5.7.40时发生错误。 问题描述 经排查发现MySQL8.0表及行的排序规则为utf8mb4_0900_ai_ci。 解决方案 将行、表的排序规则改为utf8mb4_general_ci。

10-SRCNN-使用CNN实现超分辨成像

文章目录 utils_dataset.pymodel.pytrain.pyuse.py主要文件 utils_dataset.py 工具文件,主要用来制作dataset,便于加入dataloader,用于实现数据集的加载和并行读取 model.py 主要写入网络(模型) train.py 主要用于训练 use.py 加载训练好的模型,用于测试或使用 utils_dat…

UGUI交互组件Slider

一.Slider对象的结构 对象介绍Slider附加Slider组件Background背景Fill Area填充范围Fill填充对象Handle Slider Area滑块移动范围Handle滑块 二.Slider组件属性 属性说明Fill Rect关联填充对象Handle Rect关联滑块对象Direction设置方向Min Value最大取值Max Value最小取值Wh…

Mac下通过nvm管理node

背景 本地有两个项目,老项目需要用到node 14,新项目需要用node 16,所以只能通过nvm来管理node了 卸载原始的node 我的node是通过官网的.pkg文件安装的,可以通过以下命令进行删除 sudo rm -rf /usr/local/{bin/{node,npm},lib/…

6、docker下mysql修改配置文件

1、查看mysql镜像 如果没有mysql镜像则下载 docker images |grep mysql 2、查看mysql容器 docker ps |grep mysql 如果没有显示mysql容器信息,则创建 3、创建容器 docker run -it --name mysql-test -e MYSQL_ROOT_PASSWORDroot -p 3306:3306 -d f9653 4、在…