(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 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安装与基本使用(编译安装)的更多相关文章
- 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 ...
随机推荐
- 高精度 - SGU 112 a^b-b^a
a^b-b^a Problem's Link Mean: 略 analyse: 简单题,只用编个高精度乘法和减法即可. Time complexity: O(N) view code java im ...
- js学习笔记22----BOM属性和方法
BOM基本概念 : Browser Object Model 浏览器对象模型. BOM属性: window.navigator.userAgent : 浏览器信息 判断是否是某个浏览器,可以用 ind ...
- Hadoop源码分析之数据节点的握手,注册,上报数据块和心跳
转自:http://www.it165.net/admin/html/201402/2382.html 在上一篇文章Hadoop源码分析之DataNode的启动与停止中分析了DataNode节点的启动 ...
- TensorFlow基础笔记(5) VGGnet_test
参考 http://blog.csdn.net/jsond/article/details/72667829 资源: 1.相关的vgg模型下载网址 http://www.vlfeat.org/matc ...
- CLion 2017 注册码
注册码使用时间2017-2018 CNEKJPQZEX-eyJsaWNlbnNlSWQiOiJDTkVLSlBRWkVYIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNz ...
- mysql -- 按时间查询 今天、昨天、明天、上月....
今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NO ...
- 【noip模拟题】日历游戏(博弈论+搜索)
直接搜索即可... 注意不要爆栈..所以我们可以分块搜索... 然后太懒且太弱我就不写了... orz hzwer http://hzwer.com/4954.html [问题描述] moreD和mo ...
- (转)spring IOC、DI理解
转自: http://www.cnblogs.com/xdp-gacl/p/4249939.html 个人理解: IOC控制反转,反转的是获取依赖对象的方式.传统的应用在存在依赖关系时,比如A依赖于B ...
- LodRunner实现大负载测试的四部曲(配置系统参数、配置LR、修改脚本、设置组策略)
见 http://www.51testing.com/?uid-97659-action-viewspace-itemid-210924 LoadRunner以下简称(LR)是目前业界最流行的压力测试 ...
- 集成学习AdaBoost算法——学习笔记
集成学习 个体学习器1 个体学习器2 个体学习器3 ——> 结合模块 ——>输出(更好的) ... 个体学习器n 通常,类似求平均值,比最差的能好一些,但是会比最好的差. 集成可能提 ...