目录
Linux的第三方软件包——> /opt目录下,相当于Windows下的program目录 单词 opt:有选择的意思,还有主机额外安装的软件的意思。
RPM:rehat package mannager linux安装软件包的统一规范。
检查是不是已经安装过mysql :
[root@hadoop101 opt]# rpm -qa|grep mysql
mysql-libs-5.1.73-7.el6.x86_64
如何删除已经安装的MySQL,因为装机的时候自带的MySQL并不适合我们真正的开发,我们需要自己安装:
[root@hadoop101 opt]# rpm -e --nodeps mysql-libs
[root@hadoop101 opt]# rpm -qa|grep mysql
Linux下开发的项目经验:永远不要有中文,永远不要有空格。即便现在大部分都能够检测到。
如何安装一个的软件:
rpm -ivh MySQL-**** 安装包的名字
rpm -ivh i -> install
v -> verbose 冗长的,啰嗦的
h —> h hash 代表着进度条
检查一下opt目录下是否有MySQL软件的rpm包:
[root@hadoop101 opt]# cd /opt
[root@hadoop101 opt]# ll
总用量 54040
-rw-r--r--. 1 root root 15329084 10月 18 19:22 MySQL-client-5.5.52-1.el6.x86_64.rpm
-rw-r--r--. 1 root root 40000200 10月 18 19:22 MySQL-server-5.5.52-1.el6.x86_64.rpm
drwxr-xr-x. 2 root root 4096 3月 26 2015 rh
下面开始安装:
[root@hadoop101 opt]# rpm -ivh MySQL-client-5.5.52-1.el6.x86_64.rpm
warning: MySQL-client-5.5.52-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ########################################### [100%]
1:MySQL-client ########################################### [100%]
安装mysql的服务器端,会有让你配置root密码的提示,但是在安装客户端的时候,不会出提示:
[root@hadoop101 opt]# rpm -ivh MySQL-server-5.5.52-1.el6.x86_64.rpm
warning: MySQL-server-5.5.52-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ########################################### [100%]
1:MySQL-server ########################################### [100%]
181018 19:25:16 [Note] /usr/sbin/mysqld (mysqld 5.5.52) starting as process 3617 ...
181018 19:25:16 [Note] /usr/sbin/mysqld (mysqld 5.5.52) starting as process 3624 ...
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h hadoop101 password 'new-password'
Alternatively you can run:
/usr/bin/mysql_secure_installation
which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.
See the manual for more instructions.
Please report any problems at http://bugs.mysql.com/
ps -ef | grep mysql 该命令能够测试出目前在使用的后台进程,如果在安装完成软件之后,发现并没有我们要找的,这个很有可能是我么根本还没有启动这个服务。
验证MySQL有没有安装成功?
[root@hadoop103 ~]# id zhang3
id: zhang3:无此用户
linux怎么会知道无此用户呢?说明在linux的底层有那么一个列表,执行这个命令之后,linux去查询过。mysql在安装完成之后,会有一个Mysql的用户和相应的用户组 ,分别在/etc/passwd 和 /etc/group 下,如果我们查询到了,说明我们的mysql安装成功了。
[root@hadoop103 ~]# cat /etc/passwd | grep mysql
mysql:x:496:493:MySQL server:/var/lib/mysql:/bin/bash
[root@hadoop103 ~]# cat /etc/group|grep mysql
mysql:x:493:
这里面的各个字段是什么意思? 第一项是用户名,最后一项是,根目录默认使用的shell。最简单的证明MySQL安装成功的方式是:
[root@hadoop103 ~]# mysqladmin --version
mysqladmin Ver 8.42 Distrib 5.5.52, for Linux on x86_64
以上就能够说明MySQL安装成功了,然后我们需要启动MySQL,使用命令:
service mysql restart
启动MySQL之后进行如下的操作:
[root@hadoop101 ~]# ps -ef|grep mysql
root 3665 1 0 19:28 pts/0 00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/hadoop101.pid
mysql 3759 3665 1 19:28 pts/0 00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/hadoop101.err --pid-file=/var/lib/mysql/hadoop101.pid
root 3789 3493 0 19:29 pts/0 00:00:00 grep mysql
关于top,命令: 什么时候开机,持续了多长时间 ,mysql作为在服务器机linux上的服务程序,如果没有出意外的话,不应该被关机,而且应该随机(器的启动而)启动:
[root@hadoop101 ~]# top
top - 19:34:19 up 2:38, 3 users, load average: 0.01, 0.08, 0.07
在设置开机自启动:
[root@hadoop101 bin]# chkconfig mysql on
[root@hadoop101 bin]# chkconfig --list|grep mysql
mysql 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
[root@hadoop101 bin]# cat /etc/inittab
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
登录mysql数据库:
[root@hadoop101 ~]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.52 MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
首次连接的时候,因为mysql默认没有密码,所以直接就能连接上,这样的操作非常的不安全,现在我们需要修改我们的密码:
/usr/bin目录下的:
[root@hadoop101 bin]# mysqladmin -u root password 123
[root@hadoop101 ~]# mysql
[root@hadoop101 bin]# mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
MySQL的安装位置(Mysql数据库的数据库)
我们创建好了数据库,并且命名了数据库的名字,这个数据库来存储我们的数据,但是这个数据库也是有存储的位置,也是要存放在硬盘上的某一个位置的,在Linux中就对应着一个文件夹,在这个文件下对应着我们创建的数据库。比如在Windows下的文件夹是data,在Linux中放在了 var / lib /mysql 目录下面。也就是说,如果我们登录了mysql并且创建了一个数据库,那么这个数据库存在在哪里呢?就放在这个目录下:
Linux下的var是存放变量的文件。
/ usr / bin 是相关mysql的命令目录,如mysqladmin 等命令。
[root@hadoop101 ~]# cd /usr/share/mysql
[root@hadoop101 mysql]# pwd
/usr/share/mysql
以上的目录是mysql.server 命令及其配置文件。
my.cnf
当我们安装好mysql之后,会有一个配置文件,该配置文件在上文目录下,ll之后:
图中标红的文件是MySQL在安装之后默认的配置文件(部分调优),这个是出厂默认的设置,如果我们要修改mysql的配置文件,我们应该讲这个文件copy出来,然后对赋值的文件进行操作。
[root@hadoop101 etc]# ll|grep my.cnf
drwxr-xr-x. 2 root root 4096 8月 26 2016 my.cnf.d
[root@hadoop101 etc]# cp /usr/share/mysql/my-huge.cnf /etc/my.cnf
[root@hadoop101 etc]# ll|grep my.cnf
-rwxr-xr-x. 1 root root 4697 10月 23 12:34 my.cnf
drwxr-xr-x. 2 root root 4096 8月 26 2016 my.cnf.d
5.5版本之后,是mysql-default.cnf 文件。
之后,我们需要重启mysql服务。
将mysql的默认字符集编码该成utf-8
首先我们进入mysql查询一下字符集:
mysql> show variables like '%char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
有上面可以看出,我们的数据库是拉丁,我们的服务端的字符集也是拉丁。我们需要将其修改为utf8的格式。
[root@hadoop101 ~]# vim /etc/my.cnf
1 Example MySQL config file for very large systems.
2 #
3 # This is for a large system with memory of 1G-2G where the system runs mainly
4 # MySQL.
[client]
#password = your_password
port = 3306
socket = /var/lib/mysql/mysql.sock
default-character-set=utf8
# Here follows entries for some specific programs
# The MySQL server
[mysqld]
port = 3306
character_set_server = utf8
character_set_client = utf8
collation-server=utf8_general_ci
socket = /var/lib/mysql/mysql.sock
skip-external-locking
key_buffer_size = 384M
max_allowed_packet = 1M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
[mysql]
no-auto-rehash
default-character-set=utf8
# Remove the next comment character if you are not familiar with SQL
#safe-updates
修改后的的结果如下:建议在写配置文件的时候,使用赋值粘贴命令,因为一旦配置文件出现了拼写错误,可能会导致未知错误。进而造成非常可怕的后果。
注意,这里面配置完上述的三处,之后需要再次重启数据库。
[root@hadoop101 ~]# service mysql restart
Shutting down MySQL. [确定]
Starting MySQL.. [确定]
mysql的配置文件
各个文件对应的作用:
二进制日志log-bin文件的主要用途是用来主从复制,可以将这个文件理解为一个小抄写员,将mysql的一些变化赋值下来;log-error,默认是关闭的,记录严重的警告和错误的信息,每次启动和关闭的详细信息等;查询日志log 默认也是关闭的,记录查询SQL语句,如果开启会减低mysql的整体性能,因为记录日志也是需要消耗系统资源的,该文件会用在查询截取分析;frm存放的是表结构,myd存放的是表的数据;myi存放的是索引;