一、大致操作步骤

  环境介绍:

OS:center OS6.5

  mysql:5.6版本

  

1.关闭防火墙

    查看防火墙状态:service iptables status

    

    这样就意味着没有关闭。

    运行以下命令关闭防火墙  service iptables stop,然后再次查看防火墙状态

    

       

    运行这条命令,可以彻底关闭:chkconfig iptables off

    运行:vi /etc/selinux/config

    

    这个改成disabled

2.修改配置文件

    more /etc/sysctl.conf

3.检查是否安装了mysql

    rpm -qa |grep mysql

    

    已经装了,那卸载装5.6吧,发现报错,说是有依赖,不能直接删

    

     那么我们用:yum remove mysql*

4.下载mysql包

4.1 下载

    进入www.mysql.com,然后选择download

       

    然后找到社区版

      

    然后我们找到社区版的服务

        

    然后找到我们要找的版本

    

    选择源码编译和常用Linux操作系统

    

4.2 上传并且安装

 【1】在虚拟机中挂载光驱,设置光驱就不细说了,看图

    

  【2】挂载

    mount /dev/cdrom /mnt

    #把光盘挂载到  /mnt目录下

  【3】复制到本地  

    mkdir -p /redhat/mnt

    cp -r/mnt /redhat/mnt

  【4】配置yun源

    cd /etc/yum.repos.d/

    ll

     

    #新建一个文件

    vim base.repo

    

    

    

    #安装好rz,选择mysql文件即上传到当前目录去了。

    yum install -y lrzsz

    rz

      

5.添加用户和组

    groupadd mysql    # (useradd:http://man.linuxde.net/useradd)

    useradd -d /home/mysql -g mysql -m mysql    #建立好之后可以用id mysql查看

    su - mysql       #切换到mysql用户

6.配置环境变量  

       vim  ~/.bash_profile       #配置mysql环境变量

    

    #我准备把mysql放在这个目录下面

7.创建目录及授权

      #然后构建mysql数据目录

mkdir -p /u01/my3306/data
mkdir -p /u01/my3306/log/iblog
mkdir -p /u01/my3306/log/binlog
mkdir -p /u01/my3306/run
mkdir -p /u01/my3306/tmp

    #用户授权/目录授权

    chown -R mysql:mysql /u01/my3306/
    chmod -R 755 /u01/my3306/

8.压缩mysql5.6

  tar -xzvf mysql-5.6.41.tar.gz     

  

9.配yum源,安装cmake

  #这里我们的4.2步骤已经配置yum源

  yum install -y cmake gcc gcc-c++ ncurse-devel bison zlib libxml openssl

  #解析:(1)gcc gcc-c++:编译用 (2)ncurse-devel:用于终端操作开发包 (3)bison:mysql的语法解析 (4)zlib :用zlib进行压缩 (5)libxml :以xml方式输出支持 (6)openssl:安全套接字通信

10.编译并安装

  (1)进入mysql解压后的目录(因为 cmake目录在这里)

  (2)编译

  rm CMakeCache.txt    #先把源码目录中清理一下这个文件

  然后在执行如下命令:

cmake \
-DCMAKE_INSTALL_PREFIX=/u01/my3306 \
-DMYSQL_UNIX_ADDR=/u01/my3306/run/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/u01/my3306/data\
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306

  --参数释义(深入请参考:http://blog.51cto.com/laowafang/1294964)

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \         (反斜杠意思是换行,指定安装目录)
          -DMYSQL_DATADIR=/data/mydata \                   (指定数据存储目录)
          -DSYSCONFDIR=/etc \                              (配置文件目录)
          -DWITH_INNOBASE_STORAGE_ENGINE=1 \       (指定编译存储引擎)
          -DWITH_ARCHIVE_STORAGE_ENGINE=1 \        (指定编译存储引擎)
          -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \      (指定编译存储引擎)
          -DWITH_READLINE=1 \         (指定编译库)
          -DWITH_SSL=system \        (指定编译库)
          -DWITH_ZLIB=system \        (指定编译库)
          -DWITH_LIBWRAP=0 \        (指定编译库)
          -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \     (指定套接字路径)
          -DDEFAULT_CHARSET=utf8 \             (指定默认字符集)
          -DDEFAULT_COLLATION=utf8_general_ci      (指定默认编码)
          -DWITH_BOOST=/usr/local/boost       (指定boost库位置)

发现了报错,如下:

    

yum install ncurses-devel    #命令装一下这个包

#然后再cmake,又报错如下

CMake Error: The source directory does not appear to contain CMakeLists.txt.

意思是我没有进入mysql目录,找不到cmake文件,进入一下下面的目录

    

再次cmake还是报错

    

因为开始编译过,有清除缓存文件

rm CMakeCache.txt       #需要把源码目录中的CMakeCache.txt文件删除,然后再重新CMAKE

(3)make  #编译 或者3-4可以合成一句  make && make install

(4)make install

11.mysql参数配置

[mysql]
# CLIENT #
port =
socket = /u01/my3306/mysql.sock
default-character-set = utf8
[mysqld]
# GENERAL #
user = mysql
default_storage_engine = InnoDB
socket = /u01/my3306/mysql.sock
pid-file = /u01/my3306/mysql.pid
character-set-server = utf8
# MyISAM #
key_buffer_size = 32M
myisam_recover = FORCE,BACKUP
# SAFETY #
max_allowed_packet = 16M
max_connect_errors =
skip_name_resolve
# DATA STORAGE #
datadir = /u01/my3306/data
# BINARY LOGGING #
log_bin = /u01/my3306/log/mysql-bin
expire_logs_days =
sync_binlog =
# CACHES AND LIMITS #
tmp_table_size = 32M
max_heap_table_size = 32M
query_cache_type =
query_cache_size =
max_connections =
thread_cache_size =
open_files_limit =
table_definition_cache =
table_open_cache =
# INNODB #
innodb_flush_method = O_DIRECT
innodb_log_files_in_group =
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit =
innodb_file_per_table =
innodb_buffer_pool_size = 256M
innodb_thread_concurrency =
#thread_handling = pool-of-threads
#auto_increment_increment =
#auto_increment_offset =
# LOGGING #
log_error = /u01/my3306/log/mysql-error.log
log_queries_not_using_indexes =
slow_query_log =
slow_query_log_file = /u01/my3306/log/mysql-slow.log

超简单版如下:

[mysqld]
# GENERAL #
port =
datadir = /u01/my3306/data

配置好文件,命名为my.cnf,然后rz拷贝到/u01/my3306/下

12.初始化mysql

 ./scripts/mysql_install_db --defaults-file=/u01/my3306/my.cnf --datadir=/u01/my3306/data/ -user=mysql

这里在my3306也就是我们的mysql目录下跑,

--defaults-file=/u01/my3306/my.cnf   #默认文件引用 my3306下的my.cnf

13.启动mysql

进入/u01/my3306/bin 目录下

ll  查看,有个mysqld_safe,启用它,如果mysql进程被误删一类的,它会自动重启mysql进程,实现代码如下

./mysql_safe --defaults-file=/u01/my3306/my.cnf --user=mysql &

查看mysql进程

ps -ef |grep 3306

#效果如下
 
#看图中 进程号为3530,那么我们要查看进程中的所有线程命令如下 pstack 3530
#如下图,我这里一共28个线程
 

14.登录mysql

  source .bash_profile    #引用一下环境变量文件

  

(1)直接输入mysql

  它可以进入,但是它用的操作系统认证

  

(2)常规方式登录

mysql -h127.0.0. -uroot

因为初始root没有设置密码,所以这里不需要输入密码;

到此,安装过程就大功告成了!

15.安装完成后的优化(删除多余数据库与账户)

15.1、查看数据库的版本信息

1
2
3
4
5
6
7
MariaDB [(none)]> select version();
+----------------+
| version()      |
+----------------+
| 5.5.52-MariaDB |
+----------------+
1 row in set (0.18 sec)

15.2、删除多余的账号(除root和localhost的)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
MariaDB [(none)]> use mysql
MariaDB [mysql]> select user,host from mysql.user;
+------+------------------------+
| user | host                   |
+------+------------------------+
| root | 127.0.0.1              |
| root | ::1                    |
|      | localhost              |
| root | localhost              |
|      | lvs-dr01.saltstack.com |
| root | lvs-dr01.saltstack.com |
+------+------------------------+
6 rows in set (0.03 sec)
MariaDB [mysql]> delete from mysql.user where (user,host) not in (select 'root','localhost');
Query OK, 5 rows affected (0.05 sec)
MariaDB [mysql]> select user,host from mysql.user;
+------+-----------+
| user | host      |
+------+-----------+
| root | localhost |
+------+-----------+
1 row in set (0.05 sec)

15.3、修改mysql默认的mysql管理账号

修改默认的mysql管理账号(root改为mysql,并设置新密码为redhat12345)

1
2
3
4
5
6
7
8
9
MariaDB [mysql]> update user set user="admin" where user="root";
MariaDB [mysql]> update mysql.user set user='admin',password=password('redhat12345');
Query OK, 1 row affected (0.08 sec)
Rows matched: 1  Changed: 1  Warnings: 0
MariaDB [mysql]> flush privileges;
Query OK, 0 rows affected (0.03 sec)
[root@LVS-DR01 ~]# mysql -uadmin -p'redhat12345'
MariaDB [(none)]> user mysql;
MariaDB [mysql]> show tables;

继续查询:

1
2
3
4
5
6
7
MariaDB [mysql]> select user,host from mysql.user;
+-------+-----------+
| user  | host      |
+-------+-----------+
| admin | localhost |
+-------+-----------+
1 row in set (0.00 sec)

15.4、删除test数据库

为什么要删?新建MySQL数据库后,默认创建的test数据库权限比较怪异,所有可连接的用户都能够拥有权限访问该库

1
2
3
4
5
6
7
8
9
10
11
MariaDB [mysql]> drop database test;
MariaDB [mysql]> flush privileges;
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.06 sec)

15.5、优化权限字典表mysql.db

如下所示:新建MySQL数据库后,默认创建的test数据库权限比较怪异,所有可连接的用户都能够拥有权限访问该库,并操作其中的对象,Host为%,User为空,说明了不受限制,所有能连接到MySQL的用户,全部拥有test及test开头的数据库的几乎所有权限。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
MariaDB [mysql]> select * from mysql.db where db like 'test%' \G
*************************** 1. row ***************************
                 Host: %
                   Db: test
                 User: 
          Select_priv: Y
          Insert_priv: Y
          Update_priv: Y
          Delete_priv: Y
          Create_priv: Y
            Drop_priv: Y
           Grant_priv: N
      References_priv: Y
           Index_priv: Y
           Alter_priv: Y
Create_tmp_table_priv: Y
     Lock_tables_priv: Y
     Create_view_priv: Y
       Show_view_priv: Y
  Create_routine_priv: Y
   Alter_routine_priv: N
         Execute_priv: N
           Event_priv: Y
         Trigger_priv: Y
*************************** 2. row ***************************
                 Host: %
                   Db: test\_%
                 User: 
          Select_priv: Y
          Insert_priv: Y
          Update_priv: Y
          Delete_priv: Y
          Create_priv: Y
            Drop_priv: Y
           Grant_priv: N
      References_priv: Y
           Index_priv: Y
           Alter_priv: Y
Create_tmp_table_priv: Y
     Lock_tables_priv: Y
     Create_view_priv: Y
       Show_view_priv: Y
  Create_routine_priv: Y
   Alter_routine_priv: N
         Execute_priv: N
           Event_priv: Y
         Trigger_priv: Y
2 rows in set (0.31 sec)
优化的操作:
MariaDB [mysql]> truncate table mysql.db;
Query OK, 0 rows affected (0.01 sec)
MariaDB [mysql]> select * from mysql.db where db like 'test%' \G
Empty set (0.00 sec)

15.6、如何优化/root/.mysql_history文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@LVS-DR01 ~]# tail -20 ~/.mysql_history 
flush privileges;
select user,host from mysql.user;
delete from mysql.user where user="'molewan1'@'10.10.10.%'";
delete from mysql.db where user='molewan1'@'10.10.10.%';
select user,host from mysql.user;
delete from mysql.user where user=molewan1;
delete from mysql.user where user='molewan1@10.10.10.%';
flush privileges;
select user,host from mysql.user;
delete from mysql.user where user="molewan1" and host ="10.10.10.%";
flush privileges;
select user,host from mysql.user;
delete from mysql.user where user="molewan" and host="10.10.10.%";
flush privileges;
create user molewan@'10.10.10.%' identified by 'molewan';
select user,host from mysql.user;
desc mysql.user;
update mysql.user set password=password('admin') where user='admin' and host='localhost';
flush privileges;
\q

说明:在Linux/Unix系统下,使用mysql命令行工具执行的所有操作,都会被记录到一个名为.mysql_history的文件中,该文件默认保存在当前用户的根目录下

这个设定原本是为了提升mysql命令行操作体验,在mysql中操作命令就可以上下翻动了,但某些情况下缺会造成隐患。

15.7、如何历史记录消除隐患

1
2
3
4
5
6
7
8
方法1:基于DB层的操作
修改MYSQL_HISTFILE环境变量,将其值改为/dev/null,这样所有的操作都会被输出到空,操作的历史
自然不会被保留。
方法2:基于系统层操作
仍旧保留这个文件,但是改文件实际上未/dev/null的软链接,这样所有的操作都会被输出到空,操作的历史自然不会被保留。
ln -f -s /dev/null ~/.mysql_history
[root@LVS-DR01 ~]# tail -20 ~/.mysql_history 
这时候就没有输出了

到此,安装完成后的基本优化已经完成

附加:基本操作

(1)查看登录所在实例下的所有数据库  show databases;

  

(2)查看所有的日志变量配置情况

show variables like '%log%';

  

(3)如果要在其他机器上装一样的mysql,直接拿过去用就OK了,但是server_id要改一下

  

(4)查看当前数据库上下文

  select database();

  

(5)查看当前用户

  select user();

  

(6)查看当前数据库下所有表

  show tables;

  

(7)修改mysql提示符

  登录mysql时:mysql -uroot -p --prompt '\u@test2_db \r:\m:\s->'

  

  登录mysql之后:prompt \u@test_db \r:\m:\s->

  

  注意:它是临时生效,重新登录就没了,要永久生效需要配置在my.cnf的配置文件中的  [mysql] 模块下;

  

  

(0)linux下的Mysql安装与基本使用(编译安装)的更多相关文章

  1. Linux下查看mysql、apache是否安装,安装,卸载等操作

    Linux下查看mysql.apache是否安装,并卸载. 指令 ps -ef|grep mysql 得出结果 root               ?        :: /bin/sh /usr/ ...

  2. linux 下配置mysql区分大小写(不区分可能出现找不到表的情况)怎么样使用yum来安装mysql

    Linux 默认情况下,数据库是区分大小写的:因此,要将mysql设置成不区分大小写 在my.cof 设置 lower_case_table_names=1(1忽略大小写,0区分大小写) 检查方式:在 ...

  3. Linux下查看MySQL的安装路径

    Linux下查看mysql.apache是否安装,并卸载. 指令 ps -ef|grep mysql 得出结果 root               ?        :: /bin/sh /usr/ ...

  4. ACE-6.1.0 linux 下的编译与安装步骤

    ACE-6.1.0 linux 下的编译与安装步骤  引用至http://www.cnblogs.com/liangxiaxu/archive/2013/03/07/2948417.html 1.从  ...

  5. LR通过snmp监控linux下的mysql

    LR通过snmp监控linux下的mysql 在linux底下安装配置snmp: 1.使用系统盘安装rpm包(这种方式最好) 2.在www.net-snmp.org处下载net-snmp安装(安装后有 ...

  6. Linux下PHP+MySQL+CoreSeek中文检索引擎配置

    说明: 操作系统:CentOS 5.X 服务器IP地址:192.168.21.127 Web环境:Nginx+PHP+MySQL 站点根目录:/usr/local/nginx/html 目的:安装co ...

  7. Linux 下卸载MySQL 5

    对于在Linux下通过rpm方式的mysql,我们能够通过移除这些rpm包以及删除项目的文件夹来达到卸载的目的.本文演示了在SUSE Linux 10下下载MySQL 5.5.37.详细见下文. 1. ...

  8. Linux下的暴力密码在线破解工具Hydra安装及其组件安装-使用

    Linux下的暴力密码在线破解工具Hydra安装及其组件安装-使用 hydra可以破解: http://www.thc.org/thc-hydra,可支持AFP, Cisco AAA, Cisco a ...

  9. windows下数据库文件使用脚本同步到linux下的mysql数据库中

    1.背景 windows server 2008 下 每天会有 *.sql数据文件 需要上传到linux 中的mysql数据库中 而运维人员是在 windows server 下使用 xshell 连 ...

  10. linux下,MySQL默认的数据文档存储目录为/var/lib/mysql。

    0.说明 Linux下更改yum默认安装的mysql路径datadir. linux下,MySQL默认的数据文档存储目录为/var/lib/mysql. 假如要把MySQL目录移到/home/data ...

随机推荐

  1. 高精度 - SGU 112 a^b-b^a

    a^b-b^a Problem's Link Mean: 略 analyse: 简单题,只用编个高精度乘法和减法即可. Time complexity: O(N) view code  java im ...

  2. js学习笔记22----BOM属性和方法

    BOM基本概念 : Browser Object Model 浏览器对象模型. BOM属性: window.navigator.userAgent : 浏览器信息 判断是否是某个浏览器,可以用 ind ...

  3. Hadoop源码分析之数据节点的握手,注册,上报数据块和心跳

    转自:http://www.it165.net/admin/html/201402/2382.html 在上一篇文章Hadoop源码分析之DataNode的启动与停止中分析了DataNode节点的启动 ...

  4. TensorFlow基础笔记(5) VGGnet_test

    参考 http://blog.csdn.net/jsond/article/details/72667829 资源: 1.相关的vgg模型下载网址 http://www.vlfeat.org/matc ...

  5. CLion 2017 注册码

    注册码使用时间2017-2018 CNEKJPQZEX-eyJsaWNlbnNlSWQiOiJDTkVLSlBRWkVYIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNz ...

  6. mysql -- 按时间查询 今天、昨天、明天、上月....

    今天   select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天   SELECT * FROM 表名 WHERE TO_DAYS( NO ...

  7. 【noip模拟题】日历游戏(博弈论+搜索)

    直接搜索即可... 注意不要爆栈..所以我们可以分块搜索... 然后太懒且太弱我就不写了... orz hzwer http://hzwer.com/4954.html [问题描述] moreD和mo ...

  8. (转)spring IOC、DI理解

    转自: http://www.cnblogs.com/xdp-gacl/p/4249939.html 个人理解: IOC控制反转,反转的是获取依赖对象的方式.传统的应用在存在依赖关系时,比如A依赖于B ...

  9. LodRunner实现大负载测试的四部曲(配置系统参数、配置LR、修改脚本、设置组策略)

    见 http://www.51testing.com/?uid-97659-action-viewspace-itemid-210924 LoadRunner以下简称(LR)是目前业界最流行的压力测试 ...

  10. 集成学习AdaBoost算法——学习笔记

    集成学习 个体学习器1 个体学习器2 个体学习器3   ——> 结合模块  ——>输出(更好的) ... 个体学习器n 通常,类似求平均值,比最差的能好一些,但是会比最好的差. 集成可能提 ...