目录
Linux 系统安装和卸载MySQL
1 第一种方式下载安装
1.1 下载Linux 安装包
网址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads
1.2 安装MySQL
1). 卸载 centos 中预安装的 mysql
rpm -qa | grep -i mysql #查看有没有默认安装的
rpm -e mysql-libs-5.1.71-1.el6.x86_64(版本) --nodeps #卸载
2). 上传 mysql 的安装包
3). 解压 mysql 的安装包
mkdir mysql #创建文件夹
tar -xvf MySQL-5.6.22-1.el6.i686.rpm-bundle.tar
4). 安装依赖包
yum -y install libaio.so.1 libgcc_s.so.1 libstdc++.so.6 libncurses.so.5 --setopt=protected_multilib=false(这条命令不对的话,执行yum install -y perl-Module-Install.noarch )
yum update libstdc++-4.4.7-4.el6.x86_64
(同样 命令不对的话,执行yum install libaio(安装mysql server时 执行这条语句))
5). 安装 mysql-client
rpm -ivh MySQL-client-5.6.22-1.el6.i686.rpm
6). 安装 mysql-server
rpm -ivh MySQL-server-5.6.22-1.el6.i686.rpm
1.3 启动 MySQL 服务
service mysql start
service mysql stop
service mysql status
service mysql restart
1.4 登录MySQL
mysql 安装完成之后, 会自动生成一个随机的密码, 并且保存在一个密码文件中 : /root/.mysql_secret (cat /root/.mysql_secret)
mysql -u root -p
登录之后, 修改密码 :
set password = password('itcast');
授权远程访问 :
grant all privileges on *.* to '用户名' @'%' identified by '密码';(root root)
刷新
flush privileges;
如果还远程连接不了,把防火墙关闭
service iptables status #查看防火墙状态
service iptables start
service iptables stop
centOS7
systemctl start firewalld #启动
systemctl status firewalld #查看运行状态
systemctl stop firewalld #关闭
systemctl disable firewalld.service #禁止开机启动
firewall-cmd --state #查看默认防火墙状态
firewall-cmd --reload #重启防火墙
2 第二种方式下载安装
2.1 安装MySQL官方的yum repository
[root@localhost ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
成功
2.2 下载rpm包
[root@localhost ~]# yum -y install mysql57-community-release-el7-10.noarch.rpm
成功
2.3 安装MySQL服务
[root@localhost ~]# yum -y install mysql-community-server
出现complete!表示成功
2.4 启动MySQL服务
[root@localhost ~]# systemctl start mysqld.service查看mysql状态 systemctl status mysqld.service重启:systemctl restart mysqld.service停止:systemctl stop mysqld.service
看到类似下面的界面,或者以Starting MySqL server… started MysqlServer…结尾的就成功启动了
2.5 配置开机自启
[root@woitumi-128 ~]# systemctl enable mysqld[root@woitumi-128 ~]# systemctl daemon-reload 刚刚配置的服务需要让systemctl能识别,就必须刷新配置
2.6 登录Mysql
2.6.1 先查看MySQL的默认密码
这个默认的初始密码在/var/log/mysqld.log文件中,我们可以用这个命令来查看:
grep "password" /var/log/mysqld.log
root@localhost: 默认密码
2.6.2 进入MySQL后 修改密码
登录 mysql -u root -p
mysql> set password for 'root'@'localhost'=password('Luoye111!');
设置简单的密码的话 可能会报ERROR 1819 (HY000): Your password does not satisfy the current policy requirements错误 密码简单
mysql> set global validate_password_policy=0; //改变密码等级mysql> set global validate_password_length=4; //改变密码最小长度
mysql> set password for 'root'@'localhost'=password('root');
成功
2.7 远程连接
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Luoye111!';
刷新
mysql> flush privileges;
3 开启binlog日志
使用下面命令检查是否开启binlog
show variables like '%log_bin%';
退出MySQL,使用vim编译器编辑器修改MySQL的配置文件/etc/my.cnf
[root@iz8vb4alt8m1wxfs3x9ibkz ~]# vim /etc/my.cnf
#开启binlog日志 并指定日志的基本文件名和存储路径
log-bin=/var/lib/mysql/mysql-bin
#随机指定一个不能和其他集群中机器重名的字符串
server-id=1998
开启成功
查看/var/lib/mysql
ls /var/lib/mysql
4 卸载MySQL
卸载 安装的 mysql
rpm -qa | grep -i mysql #查看有没有默认安装的rpm -e mysql-libs-5.1.71-1.el6.x86_64(版本) --nodeps #卸载
卸载之后再次执行查看命令看是否卸载完毕!
使用 find / -name mysql
命令查找mysql的相关目录
然后依次使用rm -rf
命令删除 实例:
rm -rf /usr/share/mysql/
注意:卸载后 /etc/my.cnf
不会删除,需要进行手工删除
再手动删除 /var/log/mysqld.log
这个文件,如没有这两个文件,可跳过(如果不删除这个文件,会导致新安装的 mysql 无法生成新密码,导致无法登陆)
rm -rf /etc/my.cnf rm -rf /var/log/mysqld.log
注意
如果安装是5.7.x 版本 注意!
MySQL 5.7.5及以上功能依赖检测功能。如果启用了ONLY_FULL_GROUP_BY SQL模式(默认情况下),MySQL将拒绝选择列表,HAVING条件或ORDER BY列表的查询引用在GROUP BY子句中既未命名的非集合列,也不在功能上依赖于它们。(5.7.5之前,MySQL没有检测到功能依赖关系,默认情况下不启用ONLY_FULL_GROUP_BY。有关5.7.5之前的行为的说明,请参见“MySQL 5.6参考手册”。)
下载安装的是最新版的mysql5.7.x版本,默认是开启了 only_full_group_by 模式的,但开启这个模式后,原先的 group by 语句就报错,然后又把它移除了。 一旦开启 only_full_group_by ,感觉,group by 将变成和 distinct 一样,只能获取受到其影响的字段信息,无法和其他未受其影响的字段共存,这样,group by 的功能将变得十分狭窄了 only_full_group_by 模式开启比较好。因为在 mysql 中有一个函数: any_value(field) 允许,非分组字段的出现(和关闭 only_full_group_by 模式有相同效果)。
在navicat中进行
1、查看sql_modeSELECT @@sql_mode;查询出来的值为:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
2、去掉ONLY_FULL_GROUP_BY,重新设置值。
SET @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
3、上面是改变了全局sql_mode,对于新建的数据库有效。对于已存在的数据库,则需要在对应的数据下执行:
SET sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
如果已经有数据库存在了 2和3的执行顺序反过来执行