前言
在之前的博客中,有过几篇都写了关于mysql在linux下的搭建教程,可能以后还会再写,但是又不想重复在写, 于是便想单独将此抽出来,单独写成一篇博客,并详细记录一些安装过程以及遇到的问题解决办法。顺便也将MySql的主从搭建教程也写在一起,方便以后查阅。
一、MySql安装
在安装MySql之前,查看是否以及安装过MySql,如果已经安装,但是不符合要求的话就卸载。
1,查找以前是否装有mysql
先输入:
查看是否安装了mysql
2,停止mysql服务、删除之前安装的mysql
输入:
删除命令
输入:
如果提示依赖包错误,则使用以下命令尝试
如果提示错误:error: %preun(xxxxxx) scriptlet failed, exit status 1
则用以下命令尝试:
3、查找并删除mysql目录
查找结果如下:
删除对应的mysql目录
具体的步骤如图:查找目录并删除
注意:卸载后/etc/my.cnf不会删除,需要进行手工删除
4、再次查找机器是否安装mysql
Mysql有两种安装模式,可自行选择。
###1,yum安装
首先查看mysql 是否已经安装
输入:
如果已经安装,想删除的话
输入:
普通删除命令:
强力删除命令:
依赖文件也会删除
安装mysql
输入:
如果没有,则通过wget命令下载该包
输入:
下载成功之后,再输入命令安装
在安装过程中遇到选择输入y就行了
安装成功后,输入 service mysqld start 启动服务
输入:
mysqladmin -u root -p password ‘123456’
来设置密码
输入之后直接回车(默认是没有密码的)
然后再输入
mysql -u root -p
通过授权法更改远程连接权限
输入: grant all privileges on . to ‘root’@’%’ identified by ‘123456’;
注:第一个’root’是用户名,第二个’%’是所有的ip都可以远程访问,第三个’123456’表示 用户密码 如果不常用 就关闭掉
输入:flush privileges; //刷新
在防火墙关闭之后,使用SQLYog之类的工具测试是否能正确连接
2,编译包安装
Mysql文件准备
将下载好的mysql安装包上传到linux服务器
解压mysql解压包,并移动到/usr/local目录下,重命名为mysql。
命令:
|
|
注: mysql默认的路径是就是/usr/local/mysql ,如果安装的地方更改,需要更改相应的配置文件。
安装mysql
切换到mysql的目录 /usr/local/mysql
输入:
|
|
成功安装mysql之后,输入
service mysql start 或 /etc/init.d/mysql start
查看是否启动成功
输入:
|
|
切换到 /usr/local/mysql/bin 目录下
设置密码
mysqladmin -u root password ‘123456’入mysql
输入:
|
|
设置远程连接权限
输入:
|
|
然后输入:
|
|
说明: 第一个’root’是用户名,第二个’%’是所有的ip都可以远程访问,第三个’123456’表示用户密码 如果不常用就关闭掉。
使用本地连接工具连接测试
二、MySql搭建遇到的错误解决办法
1,mysql离线安装出现:Can’t change to run as user ‘mysql’ ; Please check that the user exists!
原因:没有该用户。
解决办法:创建该用户!
例如:
添加用户:
|
|
用户加入mysql:
|
|
再次输入
|
|
成功!
2,安装完mysql之后,输入service mysql start 提示 mysql: unrecognized service。
问题原因: 是因为/etc/init.d/ 不存在 mysql 这个命令,所以无法识别。
解决办法:
1.首先查找mysql.server文件在哪
输入:
|
|
2.将mysql.server 复制到/etc/init.d/目录下,并重命名为mysql或mysqld
输入:
|
|
3.测试是否可以使用该命令
输入:
|
|
或
|
|
3,mysql数据导入报错
错误:Got a packet bigger than‘max_allowed_packet’bytes的问题
2个解决方法:
1.临时修改:mysql>set global max_allowed_packet=524288000;修改 #512M
2.永久修改: 编辑my.cnf, 在 [MySQLd] 部分添加一句(如果存在,调整其值就可以):
max_allowed_packet=10M
成功之后重启mysql。
4,mysql数据库关于max_allowed_packet的问题
主要是mysql的JDBC连接限制了最大包长度1024B,即1KB
查询当前数据库的包长度显示: show VARIABLES like ‘%max_allowed_packet%’;
修改此参数
解决方案一(临时): 进入msyql
输入:
更改最大值
解决方案二(永久):修改mysql.cnf(windows下my.ini),在[mysqld]段或者mysql的server配置段 进行修改。
修改成功后,重启mysql。
三、MySql 用到的一些命令
1.查看mysql连接数
|
|
2.查看mysql的配置
|
|
3.查看mysql事件是否开启
|
|
4.查看mysql锁的状态
是否锁表:
|
|
|
|
5.查看mysql data的存放位置
|
|
6.查看mysql 的超时时间设置
|
|
四、MySql修改密码
1,知道原来的myql数据库的root密码;
在终端命令行修改
输入
|
|
回车
登录mysql系统修改
进入mysql
输入:
|
|
进入之后
输入:
然后使用刚才输入的新密码即可登录。
2,不知道原来的myql的root的密码;
首先,你必须要有操作系统的root权限了。要是连系统的root权限都没有的话,先考虑root系统再走下面的步骤。 类似于安全模式登录系统。
需要先停止mysql服务
或
注:如果mysql不行,就用mysqld
当提示mysql已停止后进行下一步操作
在终端命令行输入:
use mysql;
UPDATE user SET password=password(“新密码”) WHERE user=’root’;
flush privileges;
exit;
#任意自然数n,只要保证两台MySQL主机不重复就可以了。
server-id=1
#开启二进制日志
log-bin=mysql-bin
#步进值auto_imcrement。一般有n台主MySQL就填n
auto_increment_increment=2
#起始值。一般填第n台主MySQL。此时为第一台主MySQL
auto_increment_offset=1
#忽略指定的数据库
binlog-ignore=mysql
binlog-ignore=information_schema
#要同步的数据库(多个可以使用逗号隔开),默认所有库
replicate-do-db=DBTEST
server-id=2
log-bin=mysql-bin
auto_increment_increment=2
auto_increment_offset=2
replicate-do-db=DBTEST
grant replication slave on . to ‘slave_account’@’192.169.2.98’ identified by ‘123456’;
flush privileges;
SHOW MASTER STATUS;
change master to master_host=’192.169.2.156’,master_user=’slave_account’,master_password=’123456’,master_log_file=’mysql-bin.000001’,master_log_pos=427;
START SLAVE;
SHOW SLAVE STATUS\G
CREATE DATABASEDBTEST
;
USE DBTEST
;
CREATE TABLE test
(
id
bigint(20) NOT NULL AUTO_INCREMENT,
name
varchar(16) DEFAULT NULL,
PRIMARY KEY (id
)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
insert into test
(id
,name
) values (1,’张三’),(2,’李四’);
select * from test;
select * from test;
```
从数据库并没有执行脚本,但是信息一致,说明成功同步了。
继续测试,在主(master)删除一条数据,查看从的数据。
主(Master)
从(Slave):
可以看到已经完全同步了!
那么本篇教程就到此结束了,谢谢阅读!