一、安装说明
安装环境:centos7、mysql57。我这里是阿里云的服务器,如果你用虚拟机作为开发环境或者不是centos7版本的系统,建议看看其他博文,以免踩坑,
当你在安装CentOS6.8上安装Mysql5.7的时候,它可能会提示你需要更高glibc的相关库,原因是你的glibc的库的版本太低。glibc是linux系统中最底层的api,随便更改底层库可能会造成系统的不稳定。是跟系统内核密切相关的东西,你与其去更新这个底层库,还不如去跟新Linux的版本。
所以我的建议是提升系统版本到CentOS7,再装MySQL(安装过程顺畅无比)。
附上glibc的下载地址
防火墙:6是iptables,7是firewalld
启动服务的命令:6是service,7是systemctl
二、卸载
卸载之前的mysql
a)查看系统中是否以rpm包安装的mysql: [root@localhost opt]# rpm -qa | grep -i mysql MySQL-server-5.6.17-1.el6.i686 MySQL-client-5.6.17-1.el6.i686 b)卸载mysql [root@localhost local]# rpm -e MySQL-server-5.6.17-1.el6.i686 [root@localhost local]# rpm -e MySQL-client-5.6.17-1.el6.i686 c)删除mysql服务 [root@localhost local]# chkconfig --list | grep -i mysql [root@localhost local]# chkconfig --del mysql d)删除分散mysql文件夹 [root@localhost local]# whereis mysql 或者 find / -name mysql mysql: /usr/lib/mysql /usr/share/mysql 清空相关mysql的所有目录以及文件 rm -rf /usr/lib/mysql rm -rf /usr/share/mysql rm -rf /usr/my.cnf 通过以上几步,mysql应该已经完全卸载干净了
三、安装
1、yum方式安装(有网络情况下推荐使用这种)
下载mysql安装包
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
如图我下载到了opt目录下
- 安装mysql源
- yum localinstall mysql57-community-release-el7-8.noarch.rpm
- 检查mysql源是否安装成功
- yum repolist enabled | grep "mysql.*-community.*"
- 安装
- yum install mysql-community-server
- 启动mysql服务
- #启动服务
systemctl start mysqld
#启动状态
systemctl status mysqld - 查看启动状态
设置开机启动mysql
systemctl enable mysqld
systemctl daemon-reload
修改默认密码
mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个默认密码。
grep 'temporary password' /var/log/mysqld.log
使用上面的密码登陆mysql
mysql -uroot -p
设置新密码
mysql> SET PASSWORD = PASSWORD('root');
这个root就是新密码,设置可以使用root远程登陆
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123@asdf' WITH GRANT OPTION;
第一句中”%”表示任何主机都可以远程登录到该服务器上访问。如果要限制只有某台机器可以访问,将其换成相应的IP即可,如:
GRANT ALL PRIVILEGES ON . TO root@”172.168.193.25” IDENTIFIED BY “123@asdf”;
123@asdf是登录密码
flush privileges;
重新从mysql数据库的grant表中重新加载权限数据。因为MySQL把权限都放在了cache中,所以在做完更改后需要重新加载
修改编码集合
查看编码
show variables like 'char%'
检测是否都是utf-8(filesystem除外),如果不是就得改,例如这个character_set_server一般是拉丁编码
修改编码
//停数据库
systemctl stop mysqld
//进入 my.cnf 文件,一般是在etc路径下
vim /etc/my.cnf
//加入要修改的字符集 修改完
在[mysqld]下追加:
character-set-server=utf8
//重启数据库
systemctl start mysqld
再次查看编码
2、rpm方式安装
官网地址
打开官网,点击DOWNLOADS , 然后,点击 MySQL Community(GPL) Downloads
点击 MySQL Community Server
在General Availability(GA) Releases中选择适合的版本
如果安装Windows 系统下MySQL ,推荐下载 MSI安装程序 ;点击 Go to Download Page 进行下载 即可
这里选择red下的下载
下载完解压
如果是5.7的,从解压文件选择如下四个上传到centos
如果是8.0的,从解压文件选择如下五个上传到centos
由于mysql安装过程中,会通过mysql用户在/tmp目录下新建tmp_db文件,所以请给/tmp较大的权限。执 行 :
chmod -R 777 /tmp
安装前,检查依赖
开始安装 在mysql的安装文件目录下执行:(必须按照顺序执行)rpm -ivh mysql-community-common-8.0.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-plugins-8.0.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.25-1.el7.x86_64.rpm
注意: 如在检查工作时,没有检查mysql依赖环境在安装mysql-community-server会报错
rpm 是Redhat Package Manage缩写,通过RPM的管理,用户可以把源代码包装成以rpm为扩展名的 文件形式,易于安装。
-i , --install 安装软件包
-v , --verbose 提供更多的详细信息输出
-h , --hash 软件包安装的时候列出哈希标记 (和 -v 一起使用效果更好),展示进度条
安装过程中可能的报错信息
一个命令:yum remove mysql-libs 解决,清除之前安装过的依赖即可
查看安装版本
mysql --version
执行如下命令,查看是否安装成功。需要增加 -i 不用去区分大小写,否则搜索不到。
rpm -qa|grep -i mysql
服务的初始化
为了保证数据库目录与文件的所有者为 mysql 登录用户,如果你是以 root 身份运行 mysql 服务,需要执 行下面的命令初始化:
mysqld --initialize --user=mysql
说明: --initialize 选项默认以“安全”模式来初始化,则会为 root 用户生成一个密码并将 该密码标记为过 期 ,登录后你需要设置一个新的密码。生成的 临时密码 会往日志中记录一份。
cat /var/log/mysqld.log 或者grep 'temporary password' /var/log/mysqld.log
root@localhost: 后面就是初始化的密码
启动MySQL,查看状态
#加不加.service后缀都可以
启动:systemctl start mysqld.service
关闭:systemctl stop mysqld.service
重启:systemctl restart mysqld.service
查看状态:systemctl status mysqld.service
mysqld 这个可执行文件就代表着 MySQL 服务器程序,运行这个可执行文件就可以直接启动一个 服务器进程。
查看MySQL服务是否自启动
systemctl list-unit-files|grep mysqld.service
默认是enabled
如不是enabled可以运行如下命令设置自启动
systemctl enable mysqld.service
如果希望不进行自启动,运行如下命令设置
systemctl disable mysqld.service
修改密码
使用初始密码登录,然后修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
设置远程连接
use mysql; select Host,User from user; 可以看到root用户的当前主机配置信息为localhost。 Host列指定了允许用户登录所使用的IP,比如user=root Host=192.168.1.1。这里的意思就是说root用户只 能通过192.168.1.1的客户端去访问。 user=root Host=localhost,表示只能通过本机客户端去访问。而 % 是个 通配符 ,如果Host=192.168.1.%,那么就表示只要是IP地址前缀为“192.168.1.”的客户端都可以连 接。如果 Host=% ,表示所有IP都有连接权限。 注意:在生产环境下不能为了省事将host设置为%,这样做会存在安全问题,具体的设置可以根据生产 环境的IP进行设置 update user set host = '%' where user ='root'; Host设置了“%”后便可以允许远程访问 Host修改完成后记得执行flush privileges使配置立即生效 flush privileges; 如果是 MySQL5.7 版本,接下来就可以使用SQLyog或者Navicat成功连接至MySQL了。 如果是 MySQL8 版本,连接时还会出现如下问题 错误号码 2058,分析是 mysql 密码加密方法变了 解决方法:Linux下 mysql -u root -p 登录你的 mysql 数据库,然后 执行这条SQL: ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'abc123';
如果无法连接,查看防火墙或端口
方式1:关闭防火墙
#centos6 service iptables stop #centos7 systemctl start firewalld.service systemctl status firewalld.service systemctl stop firewalld.service #设置开机启用防火墙 systemctl enable firewalld.service #设置开机禁用防火墙 systemctl disable firewalld.serv
方式2:开发端口
查看开放的端口号 firewall-cmd --list-all 设置开放的端口号 firewall-cmd --add-service=http --permanent firewall-cmd --add-port=3306/tcp --permanent 重启防火墙 firewall-cmd --reload
3、编译安装二进制源码包
Linux下安装mysql二进制tar.gz文件,并对其编译安装,不常用,不做介绍