一、下载Mysql的安装包
到mysql官网下载自己想要安装的mysql的版本(例如现在下载社区版64位linux版)
或者直接通过wget下载mysql-5.7.22的安装包:
64位 # wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz
32位 # wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.25-linux-glibc2.12-i686.tar.gz
通过wget下载mysql8.0版本
64位 # wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.11-linux-glibc2.12-x86_64.tar.gz
32位 # wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.11-linux-glibc2.12-i686.tar.gz
二、解压Mysql
①将下载的压缩包解压
# tar -xzvf mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz
②将解压的文件移动到一个安装目录下,这里最好一定安装到 /usr/local/mysql 下
# mv mysql-5.7.25-linux-glibc2.12-x86_64 /usr/local
③修改名字(进入/usr/local下)
# mv mysql-5.7.25-linux-glibc2.12-x86_64 mysql
三、创建用户和组
①建立一个mysql的组
# groupadd mysql
②建立mysql用户,并且把用户放到mysql组
# useradd -r -g mysql mysql
③还可以给mysql用户设置一个密码
# passwd mysql 回车设置mysql用户的密码
④修改/usr/local/mysql 所属的组和用户
# chown -R mysql:mysql /usr/local/mysql/
四、修改配置文件
①创建mysql配置文件
在/usr/local/mysql/support-files目录中创建 my_default.cnf,然后编辑
# vi my_default.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
socket=/var/lib/mysql/mysql.sock
character-set-server=utf8
[client]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysql]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
Esc 键,输入:wq保存
②复制my.cnf 到 /etc/my.cnf
# cp my_default.cnf /etc/my.cnf
③实现mysqld -install这样开机自动执行效果
复制mysql.server 到/etc/init.d/ 目录下
# cp mysql.server /etc/init.d/mysql (mysql是服务名,可自定义)
④修改 /etc/init.d/mysql 参数
# vi /etc/init.d/mysql
找到如下的地方并进行编辑
# vim mysql 按方方向下键找到如下地方,按i键进入编辑状态
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
Esc键退出编辑模式,输入 :wq保存退出
⑤创建存放socket文件的目录(路径就是my.cnf配置文件中的socket配置的路径)
# mkdir -p /var/lib/mysql
修改组和用户为mysql
# chown mysql:mysql /var/lib/mysql
⑥添加服务mysql
# chkconfig --add mysql
⑦设置mysql服务为自动
# chkconfig mysql on
五、初始化mysql服务
①安装libaio
MySQL依赖于libaio
库(Linux下的一个异步非阻塞接口),所以先要安装 libaio。
# yum install libaio
②进入到/usr/local/mysql/bin 初始化mysql
# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
这一步如果没有错误,会在/usr/local/mysql下看到生成了一个data文件夹,这个就是数据库的目录。
同时,在初始化的时候,会生在最后出现一行(一般在最后两行,找到root@localhost:后面的就是密码):
2017-08-14T03:53:43.802593Z 1 [Note] A temporary password is generated for root@localhost:>ovsP%ThQ1th
红色的就是第一次登陆mysql的临时密码(最好先复制下来)。
③给数据库加密 (还是在mysql多的bin目录下执行)
# /usr/local/mysql/bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data
六、启动mysql
①启动mysql服务
# /usr/local/mysql/bin/mysqld_safe --user=mysql &
过段时间,当不再刷屏时,按Ctrl + C退出后台进程
# /etc/init.d/mysql restart
②查看mysql进程
# ps -ef|grep mysql
七、第一次登陆mysql数据库
①登陆 # /usr/local/mysql/bin/mysql -uroot -p
输入初始化得到的临时密码(防止输错,最好复制前面初始化得到的临时密码):>ovsP%ThQ1th
②修改密码
mysql> set password=password('root用户的密码');
如果是mysql 8.0版本修改用户密码用一下命令:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root用户的密码';
③退出mysql
mysql> exit;
八、设置远程访问
①开放防火墙的3306端口 (如果防火墙已经关闭,略过此步)
# firewall-cmd --permanent --zone=public --add-port=3306/tcp
# firewall-cmd --permanent --zone=public --add-port=3306/udp
立即生效
# firewall-cmd --reload
②在mysql中添加一个远程访问的用户
使用mysql库
mysql> use mysql;
查看user表的host和user信息
mysql>select host,user from user;
root 用户的 host默认显示的 localhost,说明只支持本地访问,不允许远程访问
设置远程账户名和密码(mysql 8.0会报错,请用橘色的字来设置远程访问)
mysql> grant all privileges on *.* to 'root'@'%' identified by '远程访问mysql的密码' with grant option;
在mysql 8.0版本中有一个坑,我们可以查询mysql.user表
mysql> select host,user,plugin,authentication_string from user;
会发现root用户的加密方式为"caching_sha2_password",远程工具一般还不支持此种加密方法,
所以需要先修改root用户的加密方式为"mysql_native_password",使用如下命令修改
mysql> alter user 'root'@'localhost' identified with mysql_native_password by 'root用户的密码';
mysql> flush privileges;
再修改root用户允许任意ip地址远程访问
mysql> update mysql.user SET host='%' WHERE user='root';
其他的访问权限配置如下:
下表显示了表中各种组合User和Host值 如何 user适用于传入连接。
User 值 | Host 值 | 允许的连接 |
'fred' | 'h1.example.net' | Fred用户,从h1.example.net连接 |
'' | 'h1.example.net' | 任何用户,从h1.example.net连接 |
'fred' | '%' | Fred用户,从任何主机连接 |
'' | '%' | 任何用户,从任何主机连接 |
'fred' | '%.example.net' | fred,从example.net域中的任何主机连接 |
'fred' | 'x.example.%' | fred,从x.example.net,x.example.com,x.example.edu,等连接;这可能没有用 |
'fred' | '198.51.100.177' | Fred用户,从主机连接IP地址198.51.100.177 |
'fred' | '198.51.100.%' | Fred用户,从198.51.100的C类子网中的任何主机连接 |
'fred' | '198.51.100.0/255.255.255.0' | 与前面的例子相同 |
注:本表来源于官方文档:https://dev.mysql.com/doc/refman/8.0/en/connection-access.html
③刷新配置
mysql> flush privileges;
九、设置环境变量
①修改profile
# vi /etc/profile
②在最下面添加
# 配置Mysql环境变量
export PATH=$PATH:/usr/local/mysql/bin
③使新加的环境变量立即生效
# source /etc/profile
十、重启,查看配置是否成功
①重启Centos7
# init 6
②查看进程是否有mysql
# ps -ef|grep mysql
③用工具(如Navicat Premium)远程访问我们刚安装的mysql
选择连接 --> MySQL,在弹出的新建连接面板输入
连接名字随便起。主机名或IP地址是你MySQL安装的机器的IP地址。用户名是root,
密码是第八步第②小步设置的远程登录的密码。点击'连接测试',提示连接成功,说明MySQL数据库安装成功。
如果安装mysql8.0,参考本文是可以成功安装并设置为自启的,但是也有可能会遇到其他问题,这时可以参考Mysql官方的参考手册中的安装说明文档。
十一 修改MySQL密码
如果我们记得用户的密码,想重置密码,可以通过如下方式重置:
mysqladmin -u root -p password ‘新密码’
当我们对root用户的密码忘记时,可以通过如下方式重置密码。
1、修改MySQL配置文件(/etc/my.cnf),跳过用户认证,在 [mysqld] 下添加 skip-grant-tables
2、重启mysql服务:service mysql restart
3、进入mysql cli,重新设置密码。mysql -u root -p,提示输入密码时,直接回车进入
4、重置密码。mysql> update mysql.user set password=PASSWORD('新密码') where User='root';
5、立即生效。mysql> flush privileges;
6、退出。mysql> exit
十二 卸载 MySQL
- 查看当前 MySQL 进程: ps -ef | grep mysql
- 关闭MySQL 服务: service mysql stop
- 或者直接 kill 掉 MySQL 进程: kill -9 #mysqlpid
- 查看添加到 chkconfig 中的服务:chkconfig --list
- 关闭 chkconfig 中的 mysql 服务:chkconfig mysql off
- 删除 chkconfig 中的 mysql 服务:chkconfig --del mysql
# 移除 mysql 配置
mv /etc/my.cnf /etc/my.cnf.old
# 删除添加到开机自启的 mysql 脚本
rm /etc/init.d/mysql
# 删除本地 mysql 文件
rm -rf /usr/local/mysql
rm -rf /var/lib/mysql
# 删除 mysql 用户和组信息
userdel -r mysql
groupdel mysql