(0)linux下的Mysql安装与基本使用(编译安装)
一、大致操作步骤
环境介绍:
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 mysqlMariaDB [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: 0MariaDB [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: YCreate_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: YCreate_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: Y2 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%' \GEmpty 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安装与基本使用(编译安装)的更多相关文章
- Linux下查看mysql、apache是否安装,安装,卸载等操作
Linux下查看mysql.apache是否安装,并卸载. 指令 ps -ef|grep mysql 得出结果 root ? :: /bin/sh /usr/ ...
- linux 下配置mysql区分大小写(不区分可能出现找不到表的情况)怎么样使用yum来安装mysql
Linux 默认情况下,数据库是区分大小写的:因此,要将mysql设置成不区分大小写 在my.cof 设置 lower_case_table_names=1(1忽略大小写,0区分大小写) 检查方式:在 ...
- Linux下查看MySQL的安装路径
Linux下查看mysql.apache是否安装,并卸载. 指令 ps -ef|grep mysql 得出结果 root ? :: /bin/sh /usr/ ...
- ACE-6.1.0 linux 下的编译与安装步骤
ACE-6.1.0 linux 下的编译与安装步骤 引用至http://www.cnblogs.com/liangxiaxu/archive/2013/03/07/2948417.html 1.从 ...
- LR通过snmp监控linux下的mysql
LR通过snmp监控linux下的mysql 在linux底下安装配置snmp: 1.使用系统盘安装rpm包(这种方式最好) 2.在www.net-snmp.org处下载net-snmp安装(安装后有 ...
- Linux下PHP+MySQL+CoreSeek中文检索引擎配置
说明: 操作系统:CentOS 5.X 服务器IP地址:192.168.21.127 Web环境:Nginx+PHP+MySQL 站点根目录:/usr/local/nginx/html 目的:安装co ...
- Linux 下卸载MySQL 5
对于在Linux下通过rpm方式的mysql,我们能够通过移除这些rpm包以及删除项目的文件夹来达到卸载的目的.本文演示了在SUSE Linux 10下下载MySQL 5.5.37.详细见下文. 1. ...
- Linux下的暴力密码在线破解工具Hydra安装及其组件安装-使用
Linux下的暴力密码在线破解工具Hydra安装及其组件安装-使用 hydra可以破解: http://www.thc.org/thc-hydra,可支持AFP, Cisco AAA, Cisco a ...
- windows下数据库文件使用脚本同步到linux下的mysql数据库中
1.背景 windows server 2008 下 每天会有 *.sql数据文件 需要上传到linux 中的mysql数据库中 而运维人员是在 windows server 下使用 xshell 连 ...
- linux下,MySQL默认的数据文档存储目录为/var/lib/mysql。
0.说明 Linux下更改yum默认安装的mysql路径datadir. linux下,MySQL默认的数据文档存储目录为/var/lib/mysql. 假如要把MySQL目录移到/home/data ...
随机推荐
- TCP状态图
TCP建立关闭连接状态图 MSL:Max segment lifetime最大段存活时间. MSL在RFC1122中规定为两分钟,但是各个操作系统的实现不同,在linux上一般配置MSL???? 处于 ...
- CentOS 6.5 安装 php7 教程 包很重要使用lnmp1.4里面的包
./configure \ --prefix=/usr/local/php-7.0.1 \ --with-mysql=mysqlnd \ --with-pdo-mysql=mysqlnd \ --wi ...
- PHP+jquery+ajax实现分页
HTML <div id="list"> <ul></ul> </div> <div id="pagecount&q ...
- 二分 + 模拟 - Carries
Carries Problem's Link Mean: 给你n个数,让你计算这n个数两两组合相加的和进位的次数. analyse: 脑洞题. 首先要知道:对于两个数的第k位相加会进位的条件是:a%( ...
- CSS3制作文字半透明倒影效果
效果如图.Ps.背景线条是背景图勒,和本文效果无关... html代码如下: <div class="content"> <h3 title="专业 ...
- C++ 函数的扩展③--函数重载
//函数扩展--函数重载(C语言不支持函数重载) #include<iostream> using namespace std; //函数重载在本质上是相互独立的不同函数(静态链编),在c ...
- git 怎么看某个commit 修改的代码
详细的更改: git show commitid 只列出文件名:git show --pretty="format:" --name-only commitid 转自: http: ...
- json 转 T
T test = JsonConvert.DeserializeObject<T>(json);(json.net)
- TCP通信服务端及客户端代码
Java TCP通信使用的是Socket(客服端)和ServerSocket(服务端),具体代码如下. server端代码: import java.io.BufferedReader; import ...
- 通过/proc/sys/net/ipv4/优化Linux下网络性能
通过/proc/sys/net/ipv4/优化Linux下网络性能 /proc/sys/net/ipv4/优化1) /proc/sys/net/ipv4/ip_forward该文件表示是否打 ...
