linux安装mysql
MySQL安装
一、环境介绍:
1、服务器: 1. [root@localhost Desktop]# head -n 1 /etc/issue 2.
CentOS release 6.5 (Final)
2、mysql版本
1. mysql-5.6.26.tar.gz
二、准备工作
1、安装编译源码所需的工具和库
1. yum install gcc gcc-c++ ncurses-devel perl
2、安装cmake,从下载源码并编译安装 1.
wget
-xzvf cmake-2.8.10.2.tar.gz
3. cd cmake-2.8.10.2
4. ./bootstrap ; make ; make install
5. cd ~
三、设置MySQL用户和组
1、新增mysql用户组
1. groupadd mysql
2、新增mysql用户
1. useradd -r -g mysql mysql ———————————————————————————————————————————————
四、新建MySQL所需要的目录
1、新建mysql安装目录
1. mkdir -p /usr/local/mysql
2、新建mysql数据库数据文件目录
1. mkdir -p /data/mysqldb
五、下载MySQL源码包并解压 1. wget
2. tar -zxv -f mysql-5.6.26.tar.gz
3. cd mysql-5.6.26
设置编译参数 1. cmake \ 2.
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
3. -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
4. -DDEFAULT_CHARSET=utf8 \ 5. -DDEFAULT_COLLATION=utf8_general_ci \ 6. -DWITH_INNOBASE_STORAGE_ENGINE=1 \
7. -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
8. -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ 9. -DMYSQL_DATADIR=/data/mysqldb \
10. -DMYSQL_TCP_PORT=3306 \
11. -DENABLE_DOWNLOADS=1
注:重新运行配置,需要删除CMakeCache.txt文件
1. rm CMakeCache.txt
———————————————————————————————————————————————
编译源码
1. make
安装
1. make install
七、修改mysql目录所有者和组
修改mysql安装目录
1. cd /usr/local/mysql
2. chown -R mysql:mysql .
修改mysql数据库文件目录 1. cd /data/mysqldb 2. chown -R mysql:mysql .
八、初始化mysql数据库 1. cd /usr/local/mysql 2. scripts/mysql_install_db --user=mysql --datadir=/data/mysqldb
九、复制mysql服务启动配置文件
1. cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
注:如果/etc/my.cnf文件存在,则覆盖。
十、复制mysql服务启动脚本及加入PATH路径 1. cp
support-files/mysql.server /etc/init.d/mysqld
2.
3. vim /etc/profile
4.
5. PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
6.
———————————————————————————————————————————————
7. export PATH
8.
9. source /etc/profile
十一、启动mysql服务并加入开机自启动(可选这个步骤,以后
可以自己启动的)
service mysqld start
chkconfig --level 35 mysqld on 十二、检查mysql服务是否启动
1. netstat -tulnp | grep 3306
2. mysql -u root -p
密码为空,如果能登陆上,则安装成功。
十三、修改MySQL用户root的密码
1. mysqladmin -u root password '123456'
注:也可运行安全设置脚本,修改MySQL用户root的密码,同
时可禁止root远程连接,移除test数据库和匿名用户。
1. /usr/local/mysql/bin/mysql_secure_installation
十四、可能会出现的错误 1. 问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
:
2. Starting MySQL..The server quit without updating PID file
([FAILED]/mysql/Server03.mylinux.com.pid).
3. 解决:
4. 修改/etc/my.cnf 中datadir,指向正确的mysql数据库文件目录
1. 问题:
2. ERROR 2002 (HY000): Can't connect to local MySQL server
———————————————————————————————————————————————
through socket '/tmp/mysql.sock' (2)
3. 解决:
4. 新建一个链接或在mysql中加入-S参数,直接指出mysql.sock
位置。
5. ln -s /usr/local/mysql/data/mysql.sock /tmp/mysql.sock
6.
7. /usr/local/mysql/bin/mysql -u root -S /usr/local/mysql/data/mysql.sock 1. MySQL问题解决:
-bash:mysql:command not found
2. 因为mysql命令的路径在/usr/local/mysql/bin下面,所以你直接
使用mysql命令时,
3. 系统在/usr/bin下面查此命令,所以找不到了
4. 解决办法是:
5. ln -s /usr/local/mysql/bin/mysql /usr/bin 做个链接即可
十五、创建用户及授权
1. 新建用户
1. [root@localhost ~]# mysql -u root -p123456
2. mysql> GRANT USAGE ON *.* TO 'guojl'@'%' IDENTIFIED BY 'guojl1234'
WITH GRANT
OPTION;
3. mysql> flush privileges;
———————————————————————————————————————————————
注意:此处的"localhost",是指该用户只能在本地登录,不能在
另外一台机器上远程登录。如果想远程登录的话,将"localhost"改为
"%",表示在任何一台电脑上都可以登录。也可以指定某台机器可以
远程登录。
2. 创建数据库
1. mysql>create database RWSplitting;
3. 为用户授权 1. mysql>grant all on RWSplitting.* to 'guojl'@'%' ;
2. mysql> flush privileges;
4. 打开防火墙 1. [root@localhost ~]# vi /etc/sysconfig/iptables
2. 增加下面行
3. -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j
ACCEPT 4. 重启防火墙
5. [root@localhost ~]# service iptables restart
注意:增加的开放3306端口的语句一定要在icmp-host-prohibited之前
配置主从复制
一、修改主服务器master 1、 [root@localhost ~]# vi /etc/my.cnf
2、 增加下面内容
3、 [mysqld]
4、 log-bin=mysql-bin //[必须]启用二进制日志
5、 server-id=1//[必须]服务器唯一ID,默认是1,一般取IP最后
———————————————————————————————————————————————
一段
二、修改从服务器slave
1、 [root@localhost ~]# vi /etc/my.cnf
2、 增加下面内容
3、 [mysqld] 4、 log-bin=mysql-bin //[不是必须]启用二进制日
志 5、 server-id=2//[必须]服务器唯一ID,默认是1,一般取IP最后
一段
三、重启两台服务器的mysql 1、 [root@localhost ~]#
/etc/init.d/mysql restart
四、在主服务器上建立帐户并授权slave
1、 Mysql> GRANT REPLICATION SLAVE ON *.* to
'guojl'@'%' identified by 'guojl1234';
五、登录主服务器的mysql,查询master的状态
1、 Mysql>show master status;
2、 +------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000003 | 952 | | | +------------------+----------+--------------+------------------+ 1 row in
set (0.00 sec)
注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器
状态值变化
———————————————————————————————————————————————
六、配置从服务器Slave
1、 Mysql>change master to
master_host='192.168.0.121',master_user='guojl',
master_password='guojl1234',master_log_file='mysql-bi
n.000003',master_log_pos=952; //注意不要断开,952数字前后无
单引号。
2、 Mysql>start slave; //启动从服务器复制功能;
七、检查从服务器复制功能状态 1、 Mysql>show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.0.121 //主服务器地址
Master_User: guojl //授权帐户名,尽量避免使用root
Master_Port: 3306 //数据库端口,部分版本没有此行
Connect_Retry: 60
Master_Log_File: mysql-bin. 000003
Read_Master_Log_Pos: 600 //#同步读取二进制日志的位置,
大于等于Exec_Master_Log_Pos
Relay_Log_File: ddte-relay-bin. 000003
Relay_Log_Pos: 952
———————————————————————————————————————————————
Relay_Master_Log_File: mysql-bin.000004
Slave_IO_Running: Yes //此状态必须YES
Slave_SQL_Running: Yes //此状态必须YES
注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否
则都是错误的状态(如:其中一个NO均属错误)
如果出现Slave_IO_Running: NO如何解决:
查看错误日志,
查看mysql日志位置方法:
show global variables like '%log%';
看到如下错误:
Fatal error: The slave I/O thread stops because master and slave
have equal MySQL server UUIDs; these UUIDs must be different for
replication to work.
首先检查:
mysql> show variables like ‘server_id';
+—————+——-+
| Variable_name | Value |
+—————+——-+
| server_id | 3 |
+—————+——-+
主从并不一样,排除该问题。
继续排查,找到原因在于,拷贝整个data目录,把auto.cnf文件
———————————————————————————————————————————————
也拷贝过来了,里面记录了数据库的uuid,每个库的uuid应该是不
一样的。
[auto]
server-uuid=6dcee5be-8cdb-11e2-9408-90e2ba2e2ea6
解决办法,按照这个16进制格式,随便改下,重启mysql即可。
八、主从服务器测试 1、 主服务器Mysql,建立数据库,并在
这个库中建表插入一条数据:
mysql> create database RWSplitting;
Query OK, 1 row affected (0.00 sec)
2、 mysql> use RWSplitting;
3、 Database changed
4、
5、 mysql> create table hi_tb(id int(3),name char(10));
6、 Query OK, 0 rows affected (0.00 sec)
7、
8、 mysql> insert into hi_tb values(001,'bobu');
9、 Query OK, 1 row affected (0.00 sec)
10、
11、 mysql> show databases;
12、 +--------------------+
13、 | Database |
14、 +--------------------+
———————————————————————————————————————————————
15、 | information_schema |
16、 | RWSplitting |
17、 | mysql |
18、 | test |
19、 +--------------------+
20、 4 rows in set (0.00 sec)
21、 从服务器Mysql查询:
22、 mysql> show databases;
23、
24、 +--------------------+
25、 | Database |
26、 +--------------------+
27、 | information_schema |
28、 | RWSplitting | //I'M here,大家看到了吧
29、 | mysql |
30、 | test |
31、 +--------------------+
32、 4 rows in set (0.00 sec)
33、
34、 mysql> use RWSplitting
35、 Database changed
———————————————————————————————————————————————
36、 mysql> select * from hi_tb; //查看主服务器上新增的具体数据
37、 +------+------+
38、 | id | name |
39、 +------+------+
40、 | 1 | bobu |
41、 +------+------+
42、 1 row in set (0.00 sec) 利用RPM包安装
rpm -ivh MySQL-server-5.5.28-1.linux2.6.x86_64.rpm--nodeps
--force
———————————————————————————————————————————————