• [MySQL]-03MySQL基础管理


    第1章 启动与关闭MySQL

    1.启动方式

    常规启动:

    service mysqld start
    systemctl start mysqld
    /etc/init.d/mysqld start
    

    前台启动:

    如果作为调试可以直接使用命令启动,这是会作为前台启动将日志都打印到屏幕上

    mysqld
    mysqld_safe
    

    2.mysqld_safe和mysqld区别

    mysqld_safe作用:

    1.官方提供的启动脚本最终会调用mysqld_safe命令脚本,然后mysqld_safe脚本又会调用mysqld主程序启动MySQL服务。
    2.最终都是由mysqld启动,mysqld_safe可以看做是mysqld的守护进程。
    3.mysqld_safe会启动并监视mysqld,如果mysqld发生意外错误可以重启服务。
    4.mysqld_safe启动可以将mysqld的错误消息发送到数据目录中的host_name.err文件
    5.可以读取的配置部分[mysqld],[server],[myslqd_safe], 为了兼容mysql_safe也会读取[safe_mysqld]中的配置
    6.调用的mysqld是可以在[mysqld_safe]中用-mysqld, --mysqld-version指定
    

    mysqld作用:

    1.mysqld是mysql的核心程序,用于管理mysql的数据库文件以及用户的请求操作。
    2.mysqld可以读取配置文件中的[mysqld]的部分
    

    启动流程示意图:

    3.调试方式

    调试命令:

    mysqld
    mysqld_safe
    

    应用场景:

    1.调试数据库启动故障。
    2.临时的启动参数应用。
    

    4.关闭方式

    常规关闭:

    service mysqld stop
    systemctl stop mysqld
    /etc/init.d/mysqld stop
    

    命令关闭:

    mysql -uroot -p123456
    mysql> shutdown;
    
    mysql -uroot -p123456 -e 'shutdown;'
    

    不建议关闭方法:

    kill PID
    pkill mysqld
    killall mysqld
    

    强烈不建议:

    kill -9 PID
    

    第2章 配置管理

    1.配置方法

    配置文件    :主要方法
    命令行参数  :特殊场景
    源码编译安装:应用不多
    

    2.配置优先级

    命令行 > 配置文件 > 编译
    例如: port 
    配置文件: port=3306 2
    命令行:   port=3307 1 
    源码编译: port=3308 3
    

    3.配置文件位置

    [root@db-51 ~]# mysqld --help --verbose  |grep my.cnf
    /etc/my.cnf 
    /etc/mysql/my.cnf 
    /usr/local/mysql/etc/my.cnf 
    ~/.my.cnf
    

    实验:4个配置文件都添加port,而且参数不一样,以哪个配置为准?

    会以最后一个配置为准
    

    4.手动指定配置文件

    手工设定默认配置文件

    --defaults-file=/opt/my.cnf 
    

    启动命令

    [root@db01 ~]# mysqld_safe --defaults-file=/opt/my.cnf &
    [root@db01 ~]# mysqld  --defaults-file=/opt/my.cnf &
    

    5.编写自定义启动脚本

    cat > /etc/systemd/system/mysqldd.service <<EOF
    [Unit]
    Description=MySQL Server
    Documentation=man:mysqld(8)
    Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
    After=network.target
    After=syslog.target
    [Install]
    WantedBy=multi-user.target
    [Service]
    User=mysql
    Group=mysql
    ExecStart=/opt/mysql/bin/mysqld --defaults-file=/opt/my.cnf
    LimitNOFILE = 5000
    EOF
    

    6.配置文件格式

    [mysqld]                     # 服务端标签
    user=mysql                   # MySQL内置管理用户
    basedir=/data/app/mysql      # 软件目录
    datadir=/data/3306/data      # 数据目录
    socket=/tmp/mysql.sock       # socket文件生成目录
    port=3306                    # 端口号
    server_id                    # 主机编号(主从使用)
    
    [mysql]
    socket=/tmp/mysql.sock       # mysql 连接数据库自动读取的socket位置
    
    [标签项]
    服务端标签: 
    [server]        所有服务端的程序
    [mysqld]        mysqld 程序运行时读取的配置
    [mysqld_safe]   mysqld_safe 程序运行时读取的配置
    
    客户端标签: 
    [clinet]    所有本地客户端的程序
    [mysql]     mysql命令在本地执行时读取的配置
    [mysqldump] mysqldump .....................
    

    第3章 连接管理

    1.本地连接

    前提条件

    grant all on *.* to test@'localhost' identified by '123';
    

    本地账号密码登陆

    mysql -utest -p123
    

    本地使用socket登陆

    mysql -utest -p123 -S /tmp/mysql.sock
    

    2.远程连接

    前提条件

    grant all on *.* to test1@'10.0.0.%' identified by '123';
    

    远程连接

    mysql -utest1 -p123 -h 10.0.0.51 -P3306
    

    3.免交互执行命令

    mysql -uroot -p123 -e "select user,host from mysql.user;"
    

    4.导入数据

    mysql -uroot -p123 < world.sql
    

    5.图形连接

    sqlyog
    navicat
    workbench
    

    第3章 用户管理

    1.用户说明

    Linux用户:
    	登录Linux系统
    	管理Linux对象: 文件
    
    MySQL用户:
    	登录MySQL数据库
    	管理MySQL对象: 表 
    

    2.用户的定义

    Linux用户: 用户名
    MySQL用户: 用户名@'白名单'
    
    地址列表,允许白名单的IP登录MySQL,管理MySQL。
    oldya@'localhost'  : oldya用户能够通过本地登录MySQL(socket)
    oldya@'10.0.0.10'  : oldya用户能够通过10.0.0.10远程登录MySQL服务器
    oldya@'10.0.0.%'   :oldya用户能够通过10.0.0.xx/24远程登录MySQL服务器
    oldya@'10.0.0.5%'  :...50-59...
    oldya@'10.0.0.0/255.255.254.0'
    oldya@'%'
    oldya@'db01'
    oldya@'db01.oldya.com'
    

    3.用户管理

    查找用户

    select user,host,authentication_string from mysql.user;
    

    增加用户

    create user oldguo@'localhost';
    select user,host from mysql.user;
    
    create user oldboy@'10.0.0.%' identified by '123';
    select user,host ,authentication_string from mysql.user;
    

    root修改用户

    alter user oldguo@'localhost' identified by '123';
    

    普通账户修改密码

    set password=password('123456');
    

    删除用户

    drop user oldguo@'localhost';
    

    第4章 权限管理

    1.权限的作用

    用户对数据库对象,有哪些管理能力。
    

    2.查看权限列表

    show privileges;
    

    3.授权操作

    查看帮助:

    help grant
    

    格式说明:

    GRANT   ALL PRIVILEGES  ON    *.*    TO   'root'@'10.0.0.%'  IDENTIFIED BY '123456';
    授权         权限        ON   权限范围  TO   允许用户登陆的主机    创建密码
    

    授权举例:创建远程管理员权限

    GRANT ALL PRIVILEGES ON *,* TO 'root'@'10.0.0.%'  IDENTIFIED BY '123456';
    

    授权举例:授权一个普通用户 test@'10.0.0.%' ,权限为 select 、update、delete、insert,范围:test.*

    grant select,update,delete,insert on test.*  to test@'10.0.0.%' identified by '123';
    show grants for test@'10.0.0.%';
    

    4.回收权限

    注意: MySQL中不能重复授权。是相加关系。

    revoke delete on test.* from 'test'@'10.0.0.%' ;
    show grants for test@'10.0.0.%';
    

    5.删除用户

    DROP USER '用户'@'主机';
    

    6.权限表说明

    第5章设置和修改密码

    1.设置root密码

    mysqladmin -uroot password '123456'
    mysqladmin -uroot password '123456' -S /tmp/mysql_3306.sock
    

    2.修改root密码

    方法1: 使用mysqladmin修改

    mysqladmin -uroot -p123456 password '123'
    mysqladmin -uroot -p123456 password '123' -S /tmp/mysql_3306.sock
    

    方法2: 使用SQL语句修改指定用户

    set password for root@localhost =PASSWORD('123');
    flush privileges;
    

    方法3:使用SQL语句修改指定用户 5.7的方法

    UPDATE mysql.user SET authentication_string=PASSWORD("123456") WHERE user='root' and host='localhost';
    

    方法4:使用SQL语句修改当前用户密码

    set password=password('123456');
    flush privileges;
    

    第6章 找回root密码

    1.停止MySQL服务

    systemctl stop mysql
    

    2.忽略授权登陆验证

    mysqld_safe --skip-grant-tables --user=mysql
    

    3.免密登陆MySQL

    mysql
    

    4.修改MySQL密码

    UPDATE mysql.user SET authentication_string=PASSWORD("123456") WHERE user='root' and host='localhost';
    

    5.重启MySQL

    systemctl restart mysqld
    

    6.使用修改后的密码登陆

    mysql -uroot -p123456
    

    7.注意

    使用跳过授权表之后,所有的本地和远程用户都不需要用户名密码认证即可连接,非常危险.
    
  • 相关阅读:
    【转】PHP实现系统编程(四)--- 本地套接字(Unix Domain Socket)
    php monolog 的写日志到unix domain socket 测试终于成功
    dhcp 过程
    【转】nginx 和 php-fpm 通信使用unix socket还是TCP,及其配置
    php 获取TZ时间格式
    React.Fragment 包裹标签
    git 关联远程分支
    select * from (select user())a 为什么是查询user()的意思?
    ant Form 常用 api
    antd-design LocaleProvider国际化
  • 原文地址:https://www.cnblogs.com/alaska/p/14961695.html
Copyright © 2020-2023  润新知