mysql

2018-11-03  本文已影响0人  436048bfc6a1

忙碌了一周终于有时间总结一下

1.部署mysql:

 (1) 二进制部署(推荐): 虽然安装较为麻烦,但是mysql的目录是定制化的
 (2) rpm包(不推荐): 
     ~ yum install mysql-server yum install mysql-client
     ~ 部署简单但是目录固化
 (3) 如何安装
      a) 打开/usr/local文件夹: cd /usr/local
      b) 解压jdk并且新建/usr/java, 将jdk解压后的文件移动到/usr/java
      c) 配置全局环境变量并生效: 
         ~ vi /etc/profile
         ~ export JAVA_HOME=/usr/java/jdk1.8.0_191
         ~ export PATH=$PATH:$JAVA_HOME/bin
         ~ source /etc/profile
 (4) 安装步骤
      a) 首先检查是否已经安装
         ps -ef | grep mysqld
      b) 再查看是否有rpm包
          rpm -qa | grep -i mysql
      c) 解压mysql的tar包
      d) 创建用户组与用户
         ~ groupadd -g 101 dba : 新增组dba,并赋予组id为101
         ~ useradd -u 514 -g dba -G root -d /usr/local/mysql mysqladmin
           新增用户mysqladmin, 其home directory为/usr/local/mysql
           id为514,主组为dba, 副组为root
         ~ 如果用户已存在, 修改其的一些信息: 
           usermod -u 514 -g dba -G root -d /usr/local/mysql mysqladmin
         ~ copy环境变量配置文件到mysqladmin的home directory
           cp /etc/skel/.* /usr/local/mysql
         ~ 创建mysql的配置文件: /etc/my.cnf
         ~ 修改my.cnf的一些内容
           innodb_buffer_pool_size(按照自己情况选择)
      e) 修改配置文件my.cnf的用户与用户组
         chown mysqladmin:dba /etc/my.cnf
      f) 修改my.cnf的权限
         chmod 640 /etc/my.cnf
      g) 修改配置文件mysql文件夹的用户与用户组
           chown mysqladmin:dba /usr/local/mysql
      h) 修改mysql的权限(因为做的事软连接, 所有如果只是输入第一条命令,文件夹下文件有可能不会是755的)
           chmod -R 755 /usr/local/mysql
           chmod -R 755 /usr/local/mysql/*
           chmod -R 755 文件path
      i) 创建binlog文件(mkdir arch) 先切换为mysqladmin用户(在/usr/local/mysql文件夹下)
      L) 配置mysql的信息
          scripts/mysql_install_db  --user=mysqladmin --basedir=/usr/local/mysql 
          --datadir=/usr/local/mysql/data
         有一定几率出现Installing MySQL system tables..../bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory #缺少libaio.so 包
(5) 配置mysql服务并配置开机自启动
      a) 首先切换到/usr/local/mysql,将服务文件拷贝到init.d下,并重命名为mysql
         cp support-files/mysql.server /etc/rc.d/init.d/mysql 
      b) 对mysql文件赋予执行权限
         chmod +x /etc/rc.d/init.d/mysql
      c) 删除mysql服务
         chkconfig --del mysql
      d) 添加mysql服务
         chkconfig --add mysql
      e) 设置开机自启动
         chkconfig mysql on
         ~ 如果chkconfig mysql on没有起作用,vi /etc/rc.local文件,
           添加su - mysqladmin -c "/etc/init.d/mysql start --federated"
 (6) 启动mysql进程并监听
      a) 首先切换到mysqladmin用户
          su - mysqladmin
      b) 由于mysql在安装的时候自动在home directory 创建一个my.cnf文件,尽量删除
          rm -rf my.cnf
      c) 配置个人环境变量
          在Home directory中.bash_profile文件中添加
          ~ export MYSQL_HOME=/usr/local/mysql
          ~ export PATH=$MYSQL_HOME/bin:$PATH
      d) 启动mysql
         ~ mysqld_safe & , 执行之后按回车键,程序直接后台运行
 (7)  查找mysql的端口号
      a) ps -ef | grep mysql
      b) netstat -nlp | grep pid
 (8) 配置局部变量
      vi .bash_profile
      `export MYSQL_HOME=/usr/local/mysql`
      `export PATH=$MYSQL_HOME/bin:$PATH`
  1. 登录mysql
(1) 直接输入mysql
  1. Mysql常用命令
(1) show databases;
    会出现如下的结果
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | test               |
    +--------------------+
(2) use mysql:  使用mysql数据库
(3) show tables: 显示mysql数据库一共有多少张表
      如下(一共28张表)
      +---------------------------+
      | Tables_in_mysql           |
      +---------------------------+
      | columns_priv              |
      | db                        |
      | event                     |
      | func                      |
      | general_log               |
      | help_category             |
      | help_keyword              |
      | help_relation             |
      | help_topic                |
      | innodb_index_stats        |
      | innodb_table_stats        |
      | ndb_binlog_index          |
      | plugin                    |
      | proc                      |
      | procs_priv                |
      | proxies_priv              |
      | servers                   |
      | slave_master_info         |
      | slave_relay_log_info      |
      | slave_worker_info         |
      | slow_log                  |
      | tables_priv               |
      | time_zone                 |
      | time_zone_leap_second     |
      | time_zone_name            |
      | time_zone_transition      |
      | time_zone_transition_type |
      | user                      |
      +---------------------------+
(4) 从user表查询用户信息
     `select from user, password, host from user;`
     +------+----------+--------------+
     | user | password | host         |
       用户      密码    允许外面机器(ip)
     +------+----------+--------------+
     | root |          | localhost    |
     | root |          | bogon        |
     | root |          | 127.0.0.1    |
     | root |          | ::1          |
     |      |          | localhost    |
     |      |          | bogon        |
     +------+----------+--------------+ 
(5) 修改用户密码
    `update user set password=password('123456') where user='root';`
    之后再查询user表显示如下
    +------+-------------------------------------------+-----------+
    | user | password                                  | host      |
    +------+-------------------------------------------+-----------+
    | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | localhost |
    | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | bogon     |
    | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | 127.0.0.1 |
    | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | ::1       |
    |      |                                           | localhost |
    |      |                                           | bogon     |
    +------+-------------------------------------------+-----------+
(5) 删除空用户
    `delete from user where user = '';`
     因为空账号和空密码是十分危险的
(6) 刷新权限
      `flush privileges;`
      对于用户表的操作都加这句话。
(7) 创建数据库
      `create database henrydb`
(8) 赋予权限
     `grant all privileges on henrydb.* to henry@'127.0.0.1' identified by '123456'`
      在127.0.0.1的ip下使用henry用户访问数据库
     `grant all privileges on henrydb.* to henry@'%' identified by '123456'`
      在所有ip下使用henry用户访问数据库
     `grant all privileges on henrydb.* to henry@'133.122.111.0' identified by '123456'`
      如果ip总在变,使用该方法配置
     创建henry用户, 赋予henrydb的所有权限给henry用户,密码是123456
     不要忘记`flush privileges`
(9) 使用henry用户进入mysql
     `mysql -u henry -p -h 127.0.0.1`
     此时再show databases 显示如下
     +--------------------+
     | Database           |
     +--------------------+
     | information_schema |
     | henrydb            |
     | test               |
     +--------------------+
    由于mysql和performance_schema 权限较高,无法被henry用户查看。
(10) 正确进入数据库的命令
     `mysql -uroot -p -h127.0.0.1 -P3306`
     `mysql -uroot -p123456 -h127.0.0.1 -P3306`
     (注意-p后面不能接空格,因为会将空格看成为密码的一部分)

4.删除MySQL

(1) rm -rf $MYSQL_HOME/arch/*     删除binlog
(2) rm -rf $MYSQL_HOME/data/*     删除数据
  1. 补充
(1)  如果命令过长怎办
     scripts/mysql_install_db  \
     --user=mysqladmin \
     --basedir=/usr/local/mysql \
     --datadir=/usr/local/mysql/data
上一篇下一篇

猜你喜欢

热点阅读