MySQL:
RPM包:如果是自己学习、测试、快速部署的话,可以选择rpm包进行安装。生产上是不会用rpm包的。
tar包:一般定制化的、企业级的安装是选择tar包。
rpm包安装很简单,tar包安装比较复杂一些。
生产上mysql部署,可以看:
MySQL/MySQL 5.6.23 Install.txt at master · Hackeruncle/MySQL · GitHub
1.RPM包的安装
先搜一下,yum search mysql 看一下
安装server端:yum install -y mysql-server.x86_64
安装客户端:yum install -y mysql.x86_64
安装完了之后,可以which一下,查看一下。
安装完了之后:service mysqld start 看一下情况。(d表示后台运行的进程)
ps -ef|grep mysql 看一下
netstat -nlp|grep xxx 根据上面查到的pid看一下(并不是所有的进程都有端口号)
默认的mysql的端口号为:3306
进mysql数据库:mysql -uroot -p ,不需要输入密码,直接两次回车键,就可以进去了。
mysql在创建的时候,会创建一个root用户,空密码。-u代表用户,后面加上用户,这里加的是root。
show databases; 可以查看有哪些数据库。
停止:service mysqld stop
rpm mysql软件卸载:
rpm -qa | grep mysql 查询一下mysql相关的rpm包邮哪些,然后卸载
(rpm -qa 代表:列出所有被安装的rpm package -q 代表query,a代表all )
rpm -e xxx :卸载xxx rpm包
[root@hadoop001 ~]# rpm -qa | grep mysql
mysql-libs-5.1.73-8.el6_8.x86_64
mysql-server-5.1.73-8.el6_8.x86_64
mysql-5.1.73-8.el6_8.x86_64
[root@hadoop001 ~]# rpm -e mysql-5.1.73-8.el6_8.x86_64
error: Failed dependencies:
mysql = 5.1.73-8.el6_8 is needed by (installed) mysql-server-5.1.73-8.el6_8.x86_64
[root@hadoop001 ~]# rpm -e mysql-server-5.1.73-8.el6_8.x86_64
warning: /var/log/mysqld.log saved as /var/log/mysqld.log.rpmsave
[root@hadoop001 ~]#
[root@hadoop001 ~]#
[root@hadoop001 ~]# rpm -e mysql-5.1.73-8.el6_8.x86_64
2.tar包的安装
mysql是一种专业的软件,一般专门的软件会有专门的用户去部署 运行。比如:
oa系统 oaadmin 会有专门的linux用户oaadmin去部署
erp系统 erpadmin 会有专门的Linux用户erpadmin去部署
因为有时候权限发生变更的时候,会导致其他一些系统无法访问。
所以要养成习惯,不同的用户去管理不同的组件。
下面是mysql的安装:
版本:mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz
①准备工作 Download and Check MD5:
可以选择用wget + 链接 去网页下载
也可以用rz命令(有些软件貌似不能用rz命令)从本地上传到linux。本次选择用rz命令。
一般wget + 链接 去网页下载的软件安装包,需要用md5去校验一下,因为下载的可能有问题,或者包有东西丢失。(前提是人家会提供给你md5校验盒)
MD5值是一串hash值,文件只要有任何字节变动,MD5值就会跟着改变,因此可以作为校验文件的依据。
- 在前端输入MD5值,选中要上传的war包。
- 在前端判断war包的MD5值,与输入的MD5值是否相同,判断是否被替换。
- 在后台进行校验接收的war包的MD5值,与输入的MD5值是否相同,判断是否存在丢包情况。
md5校验:md5sum xxx 见下图:
从上图:获取一串字符,把这个字符和提供的字符对比一下,结果一样,说明没有问题。
(用这个 cat mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz.md5 可以查看提供的md5校验符)
②Check isnot install
ps -ef|grep mysqld 先看一下进程里有没有
再 rpm -qa |grep -i mysql 检查一下
如果有的话,可以这样卸载,其它方式也可以:
比如:
③tar and mv
tar xzvf mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz 解压一下
mv mysql-5.6.23-linux-glibc2.5-x86_64 mysql 移动到mysql里面
④Create group and user
groupadd -g 101 dba 创建一个组dba 组id为101
useradd -u 514 -g dba -G root -d /usr/local/mysql mysqladmin
增加一个用户名mysqladmin -u 用户id为514 -g主组为dba -G副组为root -d家目录
从上截图可以看出,因为用户mysqladmin家目录已经,存在就无法将skell目录的隐藏文件拷贝进去。
这会发生什么?
这时候切换到mysqladmin用户可以看到:变成了-bash-4.1$了:
原因:
原因是缺少了隐藏文件:个人环境变量:
把上图里:/etc/skel/下面的这三个隐藏文件copy到里面就可以了。如下:
下面是设置密码:passwd mysqladmin
⑤Create /etc/my.cnf (640权限)
对于一个系统想要运行肯定需要配置文件 比如:需要多少内存、日志放在哪里、缓存多少等等
mysql也是一样,需要一个配置文件,这个文件就是my.cnf
#defualt start: /etc/my.cnf->/etc/mysql/my.cnf->SYSCONFDIR/my.cnf->$MYSQL_HOME/my.cnf-> --defaults-extra-file->~/my.cnf
mysql在默认启动的时候,首先在etc/my.cnf这里面找配置文件,如果这里面找不到,再去SYSCONFDIR/my.cnf这里面找,如果这里面也找不到,再去$MYSQL_HOME/my.cnf,再去defaults-extra-file,再去/my.cnf
现在统一的,就在第一个文件里配置就可以了,etc/my.cnf
依次运行:cd /etc > touch my.cnf > vi my.cnf 编辑的时候如果发现文件中有内容,把内容先清空。
在配置文件里加入下面的内容,保存即可。前面是客户端的、后面是服务端的。复制下面内容的时候注意在insert下粘贴,不然首行会丢失几个字符。
[root@sht-sgmhadoopnn-01 mysql]# cd /etc/
[root@sht-sgmhadoopnn-01 etc]# touch my.cnf
[root@sht-sgmhadoopnn-01 etc]# vi my.cnf
[client]
port = 3306
socket = /usr/local/mysql/data/mysql.sock
[mysqld]
port = 3306
socket = /usr/local/mysql/data/mysql.sock
skip-external-locking
key_buffer_size = 256M
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 4M
query_cache_size= 32M
max_allowed_packet = 16M
myisam_sort_buffer_size=128M
tmp_table_size=32M
table_open_cache = 512
thread_cache_size = 8
wait_timeout = 86400
interactive_timeout = 86400
max_connections = 600
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 32
#isolation level and default engine
default-storage-engine = INNODB
transaction-isolation = READ-COMMITTED
server-id = 1
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
pid-file = /usr/local/mysql/data/hostname.pid
#open performance schema
log-warnings
sysdate-is-now
binlog_format = MIXED
log_bin_trust_function_creators=1
log-error = /usr/local/mysql/data/hostname.err
log-bin=/usr/local/mysql/arch/mysql-bin
#other logs
#general_log =1
#general_log_file = /usr/local/mysql/data/general_log.err
#slow_query_log=1
#slow_query_log_file=/usr/local/mysql/data/slow_log.err
#for replication slave
#log-slave-updates
#sync_binlog = 1
#for innodb options
innodb_data_home_dir = /usr/local/mysql/data/
innodb_data_file_path = ibdata1:500M:autoextend
innodb_log_group_home_dir = /usr/local/mysql/arch
innodb_log_files_in_group = 2
innodb_log_file_size = 200M
#生产上 机械硬盘 sata盘 5000r转 7200 10000 15000 ==> ssd 生产
# innodb_buffer_pool_size 调大 8G (调优的时候一般是这个地方) 因为这个是个人使用,所以这里使用1024M
innodb_buffer_pool_size = 1024M
innodb_additional_mem_pool_size = 50M
innodb_log_buffer_size = 16M
innodb_lock_wait_timeout = 100
#innodb_thread_concurrency = 0
innodb_flush_log_at_trx_commit = 1
innodb_locks_unsafe_for_binlog=1
#innodb io features: add for mysql5.5.8
performance_schema
innodb_read_io_threads=4
innodb-write-io-threads=4
innodb-io-capacity=200
#purge threads change default(0) to 1 for purge
innodb_purge_threads=1
innodb_use_native_aio=on
#case-sensitive file names and separate tablespace
innodb_file_per_table = 1
lower_case_table_names=1
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[mysqlhotcopy]
interactive-timeout
[myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M
⑥chown and chmod privileges and try first install
[root@10-9-140-90 local]# chown mysqladmin:dba /etc/my.cnf
[root@10-9-140-90 local]# chmod 640 /etc/my.cnf
[root@10-9-140-90 local]# ll /etc/my.cnf
-rw-r----- 1 mysqladmin dba 251 Feb 18 23:36 /etc/my.cnf
[root@10-9-140-90 local]#
[root@10-9-140-90 local]# chown -R mysqladmin:dba /usr/local/mysql
[root@10-9-140-90 local]# chmod -R 755 /usr/local/mysql
[root@10-9-140-90 local]# su - mysqladmin
[mysqladmin@10-9-140-90 ~]$ pwd
/usr/local/mysql
[mysqladmin@10-9-140-90 ~]$
#创建arch目录 存储binlog 归档日志 mysql--maxwell--kafka--ss--hbase 实时 mcp
[mysqladmin@10-9-140-90 ~]$ mkdir arch
[mysqladmin@10-9-140-90 ~]$ scripts/mysql_install_db
然后等着就成功了,最后几行显示如下:
⑦Again install
[root@10-9-140-90 local]# scripts/mysql_install_db --user=mysqladmin --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
然后就成功了。
如果出现了错误,查看data/hostname.err文件 仔细看一下什么错误。
⑧Configure mysql service and boot auto start
用root用户,进入cd /usr/local/mysql目录:
#将服务文件拷贝到init.d下,并重命名为mysql :cp support-files/mysql.server /etc/rc.d/init.d/mysql
#赋予可执行权限: chmod +x /etc/rc.d/init.d/mysql
#删除服务:chkconfig --del mysql
#添加服务:
chkconfig --add mysql
chkconfig --level 345 mysql on
vi /etc/rc.local (目的是设置开机启动)
vi /etc/rc.local
⑨Start mysql and to view process and listening 启动mysql以及查看进程和监听
切换到mysqladmin账号 :su - mysqladmin
删除 my.cnf文件 它会自动创建
service mysql start 启动
service mysql status 查看
service mysql stop 停止
用这个命令也可以启动mysql:mysqld_safe &
用这三个命令查看一下:
ps -ef|grep mysqld
netstat -tulnp | grep mysql
service mysql status
可以看到mysql的pid,端口号(mysql端口号是3306)
到此为止,mysql部署完成。mysql会创建两个用户:
root用户 密码为空 (设置四次root用户)
空用户 密码为空 (设置两次空用户)
⑩Login mysql
bin/mysql --help 可以看帮助 mysql的用法
因为有个空账号和密码,所以可以这样直接回车
show databases; 可以查看当前用户有权限看的有哪些数据库:
bin/mysql -uroot -p -h127.0.0.1
用这个可以登陆root用户,-u用户 -p密码 -h要访问的ip (这里127.0.0.1代表当前机器,如果是其他人的机器,可以换掉)
在这里因为root密码为空,直接回车就可以了。
但是生产上密码肯定不为空 比如123456
bin/mysql -uroot -p -h127.0.0.1 一回城就让你输入密码 这是安全的 不会被history记录
bin/mysql -uroot -p123456 -h127.0.0.1 一回城就进数据库 这是不安全的 会被history记录
bin/mysql -u root -p 123456 -h 127.0.0.1 -P3306 -u后面可以空格 -h后面也可以空格 -p后面不能空格(因为空格也算密码)
11.Update password and Purge user 更新密码 清空用户 (因为这是空用户空密码登陆的)
切换数据库,use mysql 切换到mysql这个库下面