Linux 下安装mysql 5.7 --Centos7

71、下载:


方法一:官网下载地址:https://dev.mysql.com/downloads/mysql/5.7.html
方法二:连接:https://pan.baidu.com/s/1IHW0oOx8CIl7Ur-EsvFmJw      提取码:h1ii 
 

2、安装:


1、解压tar.gz
tar -zxvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gzi
解压格式:tar zxvf 压缩后的路径及包名 你要压缩的文件
z:要解压的为gzip压缩
x:解压 
v:显示打包压缩解压过程
f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名

2、移动并重命名(/usr/local/mysql):
mv mysql-5.7.26-linux-glibc2.12-x86_64  /usr/local/mysql
/usr:系统级的目录,可以理解为C:/Windows/。 
/usr/lib:理解为C:/Windows/System32。 
/usr/local:用户级的程序目录,可以理解为C:/Progrem Files/。用户自己编译的软件默认会安装到这个目录下。 这里主要存放那些手动安装的软件

3、创建mysql用户、用户组,并权限配置
创建mysql用户组和用户并修改权限
     1、groupadd mysql
     2、useradd -r -g mysql mysql

4、创建数据目录(/data/mysql ),并赋予权限(如果不给此目录设置mysql,启动软件会报错)
mkdir -p  /data/mysql             #创建目录
chown mysql:mysql -R /data/mysql   #赋予权限

5、配置 my.cnf ,最简配置
vim /etc/my.cnf
内容如下:

[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
#character config
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true


解释:
[mysqld]
user=mysql                            #MySQL启动用户
basedir=/usr/local/mysql              #数据文件存放的目录 
datadir=/data/mysql                   #数据安装、数据存储目录
socket=/tmp/mysql.sock                #用于本地连接的socket套接字,连接数据库由两种模式,一种 
                                      为 TCP/IP  模式,navicat等,另一种为Socket协议,                                               
                                      而sock只为本地登录。在数据库启动会才会生成mysql.sock
server_id=6                           #服务端ID,用来高可用时做区分,主要应用于主从复制
port=3306                             #数据库端接号
log_error=/data/mysql.log             #数据库错误日志
log_bin=/dqta/mysql.bin               #数据库bin日志,主要应用于主从复制
pid-file=/data/mysql/mysql.pid        #pid文件所在目录  mysqld启动时的加载文件
character_set_server=utf8mb4          #编码格式

 

[client]代表客户端默认设置内容;
[mysql]代表我们使用mysql命令登录mysql数据库时的默认设置;
[mysqld]代表数据库自身的默认设置;

6、初始化数据库
进入mysql 的 bin 目录

cd /usr/local/mysql/bin/

初始化:

./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize

6.1、可能遇到的问题
./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
解决方法:
出现该问题首先检查该链接库文件有没有安装, 使用命令进行核查。
rpm -qa | grep libaio   
运行该命令后发现系统中无该链接库文件。
使用命令 :
yum  install  libaio-devel.x86_64
安装成功后,继续运行数据库的初始化命令,提示成功。
(2)mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
不要就安装libncurses.so.5,如果安装一个包,还会提示问题
解决方法:
yum install libncurses*

7、查看mysql 初始化密码(随机生成的)
cat /data/mysql/mysql.err

 

如上图所示,得到初始化密码。
8、启动mysql

方法一:service
先将 mysql.server 放置到 /etc/init.d/mysql 中:

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld   #mysql.server为启动脚本,service 启动的是/etc/init.d中的脚本


启动Mysql :
service mysqld start 

方法二:systemctl
Centos7中systemctl 服务路径为/etc/systemd/system,至于为什么不是 /usr/lib/systemd/system/
我们知道服务的管理是通过 systemd,而 systemd 的配置文件大部分放置于 /usr/lib/systemd/system/ 目录内。但是官方文件指出, 该目录的文件主要是原本软件所提供的设置,而要修改的位置应该放置于 /etc/systemd/system/ 目录内。
vim /etc/systemd/system/mysqld.service

[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
 
[Install]
WantedBy=multi-user.target
 
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
#Restart=on-failure
#RestartPreventExitStatus=1
#PrivateTmp=false

提权:chmod a+x /etc/systemd/system/mysqld.service
启动Mysql :systemctl start mysqld.service
上面的启动没有报错,则说明启动成功。下面是查看是否有mysql进程
ps -ef|grep mysql
如果有mysql进程,说明mysql已经安装成功。

Centos7中systemctl的 systemctl  enable  |  disable |  is-enabled  | status  | is-active  unit
systemctl   get-default    |  set-default   graphical.target  | multi-user.target           islate 在线切换模式  
systemctl reload-daemon  加载新的unit 配置文件  
systemd  的 unit 的配置文件位置  :  redhat 系列: 目录  /usr/lib/systemd/system/ 下 
enable 是在  /etc/systemd/system/multi-user.target.wants/  这个目录下 做 unit 配置文件的软链:

8.1、将mysql/bin添加的系统bin中
如果不希望每次都到bin目录下使用 mysql 命令则执行以下命令
ln -s /usr/local/mysql/bin/mysql /usr/bin      

9、修改密码
前面的步骤我们能查出mysql 随机生成的密码,接下来,登录mysql,修改密码。
mysql -u root -p密码 
一、 切换到mysql库
use mysql;

结果一:如果显示如下

Linux 下安装mysql 5.7 --Centos7_第1张图片

 重置密码:账户root,密码root         注意:此处是authentication_string不是password
update user set authentication_string=password('root') where user='root';

Linux 下安装mysql 5.7 --Centos7_第2张图片

 刷新权限并退出
mysql> flush privileges;

结果二:如果显示如下

重置密码:
alter user user() identified by "root";      

二、  如果密码忘了:
方法一:在vi /etc/my.cnf下的[mysqld]下加入
skip-grant-tables  #跳过授权表
skip-networking   #跳过远程登录    意思是关闭掉远程

Linux 下安装mysql 5.7 --Centos7_第3张图片

再执行下面
[root@local] # mysql 
use mysql;                                        
update user set authentication_string=password('root') where user='root';
mysql> flush privileges;
重启数据库

方法二、[root@local] # mysqld_safe --skip-grant-tables --skip-networking &
[root@local] # mysql 
use mysql;
update user set authentication_string=password('root') where user='root';
mysql> flush privileges;
重启数据库

追加问题:
修改密码后,远程登录一直提示密码错误
解释:update user set authentication_string=password('root') where user='root';默认的是修改的是user =root host =localhost 

Linux 下安装mysql 5.7 --Centos7_第4张图片

%表示允许所有机器能访问root用户。所以上面的命令修改的是user='root',host =localhost。
修改mysql的用户密码,分别使用grant、alter、set修改
修改mysql的用户密码,分别使用grant、alter、set修改
①mysql> grant all privileges on *.* to '用户名'@'登录主机' identified by '密码';
grant 权限列表(insert、del等) privileges on 数据库.表 to ‘用户名’@’访问主机’ identified by ‘密码’; 
grant all privileges on *.* to 'root'@'%' identified by '123' with grant option;
flush privileges;
grant :赋权命令
all privileges:当前用户的所有权限
on:介词
*.*:当前用户对所有数据库和表的相应操作权限
to :介词
‘root’@’%’:权限赋给root用户,所有ip都能连接
identified by ‘123456’:连接时输入密码,密码为123456
with grant option:允许级联赋权
②mysql> alter user '用户名'@'登录主机' identified by '密码(自定义)';
③mysql> SET PASSWORD FOR '用户名'@'登录主机' = PASSWORD('密码');
grant all on *.* to 'test_1'@'localhost' identified by '123456';
SET PASSWORD FOR 'test_1'@'localhost' = PASSWORD('123456789');
alter user 'test_1'@'localhost' identified by '123456';

查看权限:
select user ,host from mysql.user;

Linux 下安装mysql 5.7 --Centos7_第5张图片

show grants for 你的用户;
show grants for ‘root’@’%’:
Linux 下安装mysql 5.7 --Centos7_第6张图片

10、远程连接
use mysql;                                                            # 访问 mysql 库 
update user set host = '%' where user = 'root';    # 使 root 能再任何 host 访问
flush privileges;                                                    # 刷新 
quit;       

11、开机自启:

确保下 /etc/rc.d/init.d/ 目录下mysqld ,并有执行
[root@localhost ~]# ll /etc/init.d/mysqld 
-rwxr-xr-x 1 root root 10576 5月  16 02:15 /etc/init.d/mysqld
如果没有:
命令: cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
赋予可执行权限:chmod +x /etc/init.d/mysqld
配置开机自启:
添加为服务: 
[root@localhost ~]# chkconfig --add mysqld
[root@localhost ~]# chkconfig --list

Linux 下安装mysql 5.7 --Centos7_第7张图片

mysqld    0:关    1:关    2:开    3:开    4:开    5:开    6:关
看到3、4、5状态为开或者为 on 则表示成功。如果是 关或者 off 则执行一下:chkconfig --level 345 mysqld on重启计算机:reboot

 

你可能感兴趣的:(mysql)