zoukankan      html  css  js  c++  java
  • MySQL基础管理

    MySQL基础管理

    一、用户管理

    1.1、用户的作用

    Linux用户:

    登陆Linux系统
    管理Linux对象:Linux一切皆文件
    

    MySQL用户:

    登陆管理MySQL数据库
    管理MySQL对象:表
    

    1.2、用户的定义

    Linux用户:

    用户名
    

    MysQL用户:

    用户名@'白名单'
    白名单?
    	地址列表,允许白名单的IP登录MySQL,管理MysQL。
    	oldguo@ 'localhost': oldguo用户能够通过本地登录MySQL(socket)
    	oldguo@'10.0.0.10': oldguo用户能够通过10.0.0.10远程登录MySQL服务器
    	oldguo@'10.0.0.%': oldguo用户能够通过10.0.0.xx/24远程登录MySQL服务器
    	oldguo@'10.0.0.5%': oldguo用户能够通过10.0.0.50-59/24远程登录MySQL服务器
    	oldguo@'10.o.o.0/255.255.254.o'
    	oldguo@'%'					网络通就可以登陆
    	oldguo@'db01'				主机名登陆
    	oldguo@ ' dbo1.oldguo.com'  域名登陆
    

    1.3、用户管理

    查:

    show databases;
    use mysql;
    select user ,host ,authentication_string(密码) from mysql.user;
    +---------------+-----------+-------------------------------------------+
    | user          | host      | authentication_string                     |
    +---------------+-----------+-------------------------------------------+
    | root          | localhost | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
    | mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
    | mysql.sys     | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
    +---------------+-----------+-------------------------------------------+
    3 rows in set (0.00 sec)
    

    增:

    # 创建用户不设置密码
    create user tzh@'localhost';
    # 创建用户且设置密码
    create user  identified by '123';
    

    改:

    alter user tzh@'localhost' identified by '123'; #修改密码也行
    

    删:

    drop user zh@'192.168.1.%';
    

    注意:8.0以后必须得先建用户再授权!8.0以前可以用grant命令,新建用户且授权!

    1.4、权限管理

    • 权限表现方式:
      • Linux中:
        • wrx
      • MySQL中:
        • 具体的命令

    查看可权限命令:

    show privileges;
    +-------------------------+------------------+-----------------------+
    | Privilege         | Context            | Comment                                               |
    

    授权操作:

    8.0前:
    grant  权限1,权限2,...,权限n  on 对象(表明或者库名) to 用户 indentified by '密码' with Grant option ;
    # 多次grant多次使用,权限是叠加的
    
    8.0后:
    create user  用户名字 identified by '密码';
    grant权限on对象to 用户;
    

    权限:

    权限:
    ALL						:管理员(不包括with Grant option)
    权限1,权限2,权限3,...		:普通用户(业务用户,开发用户)
    给别的用户授权		 	   :with Grant option 放最后面
    

    对象:库,表

    *.*(全部授权) 			--——->chmod -R 755/    root管理员
    oldguo(库).*	 		  ----->chmod -R 755 	 /oldguo普通用户  oldguo库下的所以表的权限
    oldguo.tl(表)  		  ————->chmod -R 755 	 /oldguo/t1
    

    例子:

    grant all on *.* to tzh1@'192.168.1.%' identified by '123' with grant option;
    # 查看用户授权
    show grants for tzh1@'192.168.1.%';
    

    扩展:
    MySQL授权表:
    user库中
    db : app.*
    tables_priv : app.t1
    columns_priv :列

    回收权限:

    revoke  delete on tzh.*  from tzh1@'192.168.1.%';
    revoke  delete on *.*  from tzh1@'192.168.1.%';
    

    二、本地管理员用户密码忘记

    跳过授权表、跳过网络连接

    pkill mysqld
    # 停止数据库后,用mysqld_safe方式启动
    mysqld_safe --skip-grant-tables --skip-networking &
    或者
    service mysqld start --skip-grant-tables --skip-networking  意外发现
    
    # 手工加载授权表,刷新权限,给管理器账号设置密码
    mysql> flush privileges;
    mysql>  alter user root@'localhost' identified by '123456';
    
    #干掉mysql,再次启动
    pkill mysqld
    systemctl start  mysqld
    

    三、连接管理

    图解:

    3.1、自带客户端命令

    mysql 常用参数:

    -u                   用户
    -p                   密码
    -h                   IP
    -P                   端口
    -S                   socket文件
    -e                   免交互执行命令
    <                    导入SQL脚本
    
    socket :
    前提:数据库中必须实现授权oldguo@ 'localhost'用户
    mysql -utzh -p123 -s /tmp/mysql.sock
    mysql -utzh -p -s /tmp/mysql.sock大实**太推荐方式
    mysql -p123 -s /tmp /mysql.sock
    mysql
    mysql -uroot -p123
    -----------------------------------------------------
    tcpip:
    前提:必须提前创建好,可以远程连接的用户(例如: tzh@'10.0.0.%')。
    mysql -utzh -p123 -h 1o.o.0.51 -P 3306
    mysql -utzh -p123 -h 1o.o.0.51
    mysql -utzho -p -h 10.0.0.51 -P 3306
    

    查看连接是远程还是本地连接:

    show processlist;
    

    mysqldump备份工具
    mysqladmin管理工具

    3.2、程序连接

    java、go、python、php

    四、初始化配置

    4.1、作用

    控制MySQL的启动
    影响到客户端的连接
    

    4.2、初始化配置的方法

    1、预编译
    2、配置文件(所有启动方式)
    3、命令行参数 (仅限于 mysqld_safe mysqld)
    

    4.3、配置文件作用

    配置文件读取顺序:

    以最后读取到的配置文件为准!!!

    但是,如果启动时加入了--defaults-file=xxxx时,以上的所有文件都不会读取.

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

    配置文件的书写方式:

    [标签]
    配置项=xxxx
    
    标签类型:服务端、客户端
    服务器端标签:
    [mysqld]
    [mysqld_safe]
    [server]
    
    客户端标签:
    [mysql]
    [mysqldump]
    [client]
    
    配置文件的示例展示:
    [root@db01 ~]# cat /etc/my.cnf
    [mysqld]					#服务器端标签
    user=mysql					#负责数据库管理用户
    basedir=/app/database/mysq1 #软件的安装位置
    datadir=/data/ 3306			#数据的存放位置
    server_ id=6				#标识节点的唯一编号(主从有用)
    port=3306					#端口号
    socket=/ tmp/mysql . sock	#套接字文件
    
    [mysq1]						#客户端标签
    socket=/ tmp/mysql.sock	#读取socket文件的位置点
    

    五、mysql启动、关闭

    启动方式,原理图

    启动
    systemctl start mysqld ----> mysql.server  ----> mysqld_ safe  ---> mysqld
    mysqld_ safe和mysqld ,可以在启动数据库时,加入自己执行的参数,例如
    -- skip-grant-tables
    -- skip-networking
    -- defaults-file=/opt/my. cnf
    
    关闭
    systemctl stop mysqld
    service mysqld stop
    /etc/init.d/mysq1d stop
    mysqladmin -uroot -p123 shutdown
    mysql -uroot -p123 -e "shutdown"
    
  • 相关阅读:
    wenbao与LCIS(最长公共上升子序列)
    wenbao与cf上升序列(最多改变一个变为连续严格上升序列)
    wenbao与随机
    wenbao与cf(849D)思维
    wenbao与蓝桥
    wenbao与合肥网络赛
    wenbao与HDU
    wenbao与hiho最短路还原
    wenbao与cf连续子序列最大和问题
    wenbao与cf四个人坐车的故事
  • 原文地址:https://www.cnblogs.com/hsyw/p/14022438.html
Copyright © 2011-2022 走看看