• 专职DBA-MySQL连接启动与多实例数据库


    专职DBA-MySQL连接启动与多实例数据库
    作者:周万春
    微信:lovemysql3306
    
    
    MySQL连接工具-mysql命令使用
    自带客户端命令
    mysql命令常用参数:
    -u      用户
    -p      密码
    -h      IP地址
    -S      socket文件
    -P      端口
    -e      免交互执行命令
    <       导入SQL脚本
    -f      强制执行忽略报错
    -BNse   ***
    
    
    远程登录
    [root@db01 ~]# mysql -uzhouwanchun -p -h10.0.0.11 -P3306
    
    本地登录
    [root@db01 ~]# mysql -udba -p -S /data/mysql/mysql3306/sock/mysql.sock
    
    [root@db01 ~]# mysql -uroot -p默认走的是本地socket,socket文件必须在/tmp/mysql.sock
    读的配置文件是
    [root@db01 ~]# mysqld --verbose --help | grep /my.cnf
    /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
    
    导入SQL脚本
    [root@db01 ~]# mysql.dba < /disk/world.sql -f
    [root@db01 ~]# mysql.dba -e "show databases;"
    [root@db01 ~]# mysql.dba -BNse "show databases;"
    app01
    information_schema
    mysql
    performance_schema
    sys
    world
    
    
    MySQL数据库启动方式流程介绍
    service mysqld start & /etc/init.d/mysqld start 找的都是 /usr/local/mysql/bin/mysqld_safe
    /usr/local/mysql/bin/mysqld_safe 找的是 /usr/local/mysql/bin/mysqld 最终由 mysqld 将数据库实例拉起来。
    
    
    MySQL启动方式
    [root@db01 ~]# mkdir -p /usr/local/mysql/etc
    [root@db01 ~]# ln -s /data/mysql/mysql3306/conf/my3306.cnf /usr/local/mysql/etc/my.cnf
    [root@db01 ~]# chown -R mysql:mysql /usr/local/mysql/etc
    [root@db01 ~]# cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/
    [root@db01 ~]# chmod 700 /etc/init.d/mysql.server
    [root@db01 ~]# file /etc/init.d/mysql.server
    /etc/init.d/mysql.server: POSIX shell script, ASCII text executable
    [root@db01 ~]# mysqladmin.shutdown
    [root@db01 ~]# ps -ef | grep mysqld
    [root@db01 ~]# /etc/init.d/mysql.server start
    [root@db01 ~]# ps -ef | grep mysqld
    root       6224      1  1 01:53 pts/1    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql/mysql3306/data --pid-file=/data/mysql/mysql3306/data/db01.pid
    mysql      8220   6224 15 01:53 pts/1    00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql/mysql3306/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/mysql3306/log/error.log --open-files-limit=65535 --pid-file=/data/mysql/mysql3306/data/db01.pid --socket=/data/mysql/mysql3306/sock/mysql.sock --port=3306
    root       8274   6193  0 01:53 pts/1    00:00:00 grep --color=auto mysqld
    
    [root@db01 ~]# mysql -udba -p
    [root@db01 ~]# /etc/init.d/mysql.server stop
    Shutting down MySQL.. SUCCESS!
    [root@db01 ~]# ps -ef | grep mysqld
    
    
    [root@db01 ~]# mysqld &
    [root@db01 ~]# ps -ef | grep mysqld
    mysql      8364   4000 15 01:56 pts/0    00:00:00 mysqld
    root       8417   4000  0 01:56 pts/0    00:00:00 grep --color=auto mysqld
    [root@db01 ~]# netstat -lnp | grep mysqld
    tcp6       0      0 :::3306                 :::*                    LISTEN      8364/mysqld         
    tcp6       0      0 :::33060                :::*                    LISTEN      8364/mysqld         
    unix  2      [ ACC ]     STREAM     LISTENING     54643    8364/mysqld          /data/mysql/mysql3306/sock/mysqlx.sock
    unix  2      [ ACC ]     STREAM     LISTENING     54646    8364/mysqld          /data/mysql/mysql3306/sock/mysql.sock
    [root@db01 ~]# mysql.dba
    [root@db01 ~]# mysqladmin.shutdown
    
    
    以上多种方式,都可以单独启动MySQL服务
    mysqld_safe和mysqld一般是在临时维护时使用。
    另外,从CentOS7系统开始,支持systemd直接调用mysqld的方式进行启动数据库。
    
    
    MySQL数据库root密码忘记了?
    跳过授权表登录数据库,不让它验证登录
    把验证模块给关掉
    --skip-grant-tables : 连接层关闭验证模块,所有验证表不加载。
    --skip-networking  : 连接层关闭tcp/ip协议,禁止远程访问。
    
    [root@db01 ~]# mysqladmin.shutdown
    [root@db01 ~]# mysqld --defaults-file=/data/mysql/mysql3306/conf/my.cnf --skip-grant-tables --skip-networking &
    密码为空或者随便输入都能登录数据库了这次
    [root@db01 ~]# mysql -S /data/mysql/mysql3306/sock/mysql.sock
    [root@:mysql.sock] [(none)]> select user(),current_user();
    +--------+-----------------------------------+
    | user() | current_user()                    |
    +--------+-----------------------------------+
    | root@  | skip-grants user@skip-grants host |
    +--------+-----------------------------------+
    1 row in set (0.00 sec)
    
    但是远程不能登录数据库(因为没有端口)
    [root@db01 ~]# mysql -uzhouwanchun -p -h10.0.0.11 -P3306
    Enter password: 
    ERROR 2003 (HY000): Can't connect to MySQL server on '10.0.0.11' (111)    '
    
    修改密码
    [root@:mysql.sock] [(none)]> alter user 'root'@'localhost' identified by '3306';
    ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
    
    不能正常去修改密码了,因为你的授权表根本就没有加载到内存,加载不了。
    [root@:mysql.sock] [(none)]> flush privileges;
    [root@:mysql.sock] [(none)]> alter user 'root'@'localhost' identified by 'lovemysql3306';
    [root@:mysql.sock] [(none)]> shutdown;
    [root@db01 ~]# mysqld.start
    [root@db01 ~]# mysql -uroot -p -S /data/mysql/mysql3306/sock/mysql.sock
    Enter password:lovemysql3306
    
    初始化配置方法:
    预编译
    命令行参数(仅限于 mysqld_safe和mysqld)
    配置文件(所有启动方式)
    
    初始化配置优先级:命令行 > 配置文件 > 预编译
    
    初始化配置文件的默认读取路径:
    [root@db01 ~]# mysqld --verbose --help | grep /my.cnf
    /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
    他们的优先级是后者覆盖前者。
    默认情况下,MySQL启动时,会依次读取以上配置文件,如果有重复选项,会以最后一个文件设置的为准。
    但是,如果启动时加入了--defaults-file=xxx时,读你自己指定的配置文件以上所有的文件都不会读取了!
    --defaults-extra-file=# 这个是最后要加载的额外配置文件。
    可以验证测试一下,比如设置端口号或者socket
    [root@db01 ~]# vim ~/.my.cnf
    [mysqld]
    socket=/tmp/mysql3306.sock
    [root@db01 ~]# /etc/init.d/mysqld start
    [root@db01 ~]# ls -l /tmp/
    total 4
    srwxrwxrwx 1 mysql mysql 0 Mar  8 07:16 mysql3306.sock
    -rw------- 1 mysql mysql 5 Mar  8 07:16 mysql3306.sock.lock
    [root@db01 ~]# rm -rf ~/.my.cnf
    
    
    初始化配置文件的书写方式:
    [标签]
    配置项=xxx
    
    标签类型:服务端的、客户端的
    
    客户端标签:
    [client]
    [mysql]
    [mysqldump]
    
    服务端标签:
    [mysqld]
    [server]
    [mysqld_safe]
    [mysqld_multi]
    
    
    MySQL多实例
    公用硬件资源,独立的数据、配置文件,独立启动。
  • 相关阅读:
    另一个博客
    友情链接&部分题目的密码
    知识点汇总
    一些模板的调试样例
    摘抄
    通过代理连接Microsoft Store和更新Windows系统
    模电复习
    Codeforces Round #583 F Employment
    杂感(三)
    杂感(二)
  • 原文地址:https://www.cnblogs.com/zhouwanchun/p/11121080.html
Copyright © 2020-2023  润新知