Linux安装MySQL5.7

Posted 鵷虹hw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux安装MySQL5.7相关的知识,希望对你有一定的参考价值。

Linux安装mysql5.7

操作系统信息

 

# cat /etc/issue

CentOS release 6.5 (Final)

Kernel \r on an \m

 

# uname -a

Linux mysql5-6 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

 

 

 

上传文件至Linux服务器

 

652M mysql-5.7.17-linux-glibc2.5-x86_64.tar

 

解压mysql-5.7.17-linux-glibc2.5-x86_64.tar

shell> tar -xvf mysql-5.7.17-linux-glibc2.5-x86_64.tar

 

652M mysql-5.7.17-linux-glibc2.5-x86_64.tar

624M mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz

28M mysql-test-5.7.17-linux-glibc2.5-x86_64.tar.gz

 

shell> mv mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz /usr/local

 

 

卸载系统自带的mysql

shell> rpm -qa|grep -i mysql

 

可能会出现以下的一个或多个,没有更好,说明你的系统很干净,但是以防万一,不管怎样,下面的操作还是检查一变

perl-DBD-MySQL-4.013-3.el6.x86_64

mysql-libs-5.1.71-1.el6.x86_64

qt-mysql-4.6.2-26.el6_4.x86_64

mysql-5.1.71-1.el6.x86_64

mysql-server-5.1.71-1.el6.x86_64

 

如果出现了上面的一个或多个,也不用担心,使用卸载命令,有几个删几个

 

 

卸载命令:rpm -ev {包名}

 

 

会出现很多问题,最常见的就是卸载mysql-libs-5.1.71-1.el6.x86_64 会发现postfix-2:2.6.6-2.2.el6_1.x86_64被依赖,不用担心,用下面这个命令就OK啦

rpm -ev mysql-libs-5.1.71-1.el6.x86_64 如果这句没用,则运行下面的这句

rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64

 

 

重新检查

shell> rpm -qa|grep -i mysql

 

 

查找老版本mysql相关的安装目录命令:find / -name mysql

 

 

 

若查找到相关目录使用命令:rm –rf {目录名}

 

 

 

 

检查配置文件

/etc/my.cnf or the /etc/mysql

 

进入/etc/目录查看mysql的配置文件my.cnf是否存在,若存在则使用命令:rm –f my.cnf 进行删除。

 

 

安装MySQL5.7

挂载磁盘,安装依赖包

shell> vi /etc/yum.repos.d/local.repo

 

[base]

name=local

baseurl=file:///media

gpgcheck=0

enabled=1

 

shell> mount /dev/sr0 /media

 

 

shell> yum search libaio

Loaded plugins: fastestmirror, refresh-packagekit, security

Loading mirror speeds from cached hostfile

base | 4.0 kB 00:00 ...

===================================================================================== N/S Matched: libaio ======================================================================================

libaio.i686 : Linux-native asynchronous I/O access library

libaio.x86_64 : Linux-native asynchronous I/O access library

libaio-devel.i686 : Development files for Linux-native asynchronous I/O access

libaio-devel.x86_64 : Development files for Linux-native asynchronous I/O access

 

Name and summary matches only, use "search all" for everything.

 

shell>

shell> yum install libaio

Loaded plugins: fastestmirror, refresh-packagekit, security

Loading mirror speeds from cached hostfile

Setting up Install Process

Package libaio-0.3.107-10.el6.x86_64 already installed and latest version

Nothing to do

 

shell>

 

 

 

 

 

 

---------------------------------------------------------------------------------

########官方给的安装步骤-begin########

 

shell> groupadd mysql

shell> useradd -r -g mysql -s /bin/false mysql

shell> cd /usr/local

shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz

shell> ln -s full-path-to-mysql-VERSION-OS mysql

shell> cd mysql

shell> mkdir mysql-files

shell> chmod 750 mysql-files

shell> chown -R mysql .

shell> chgrp -R mysql .

shell> bin/mysql_install_db --user=mysql # MySQL 5.7.5

shell> bin/mysqld --initialize --user=mysql # MySQL 5.7.6 and up

shell> bin/mysql_ssl_rsa_setup # MySQL 5.7.6 and up

shell> chown -R root .

shell> chown -R mysql data mysql-files

shell> bin/mysqld_safe --user=mysql &

# Next command is optional

shell> cp support-files/mysql.server /etc/init.d/mysql.server

 

 

#This procedure assumes that you have root (administrator) access to your system. Alternatively, #you can prefix each command using the sudo (Linux) or pfexec (Solaris) command.

 

########官方给的安装步骤-end########

---------------------------------------------------------------------------------

 

 

shell> groupadd mysql

shell> useradd -r -g mysql -s /bin/false mysql

 

 

 

解压

shell> cd /usr/local

 

shell> tar -zxvf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz

 

2.5G mysql-5.7.17-linux-glibc2.5-x86_64

652M mysql-5.7.17-linux-glibc2.5-x86_64.tar

624M mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz

28M mysql-test-5.7.17-linux-glibc2.5-x86_64.tar.gz

 

 

 

shell> ln -s /usr/local/mysql-5.7.17-linux-glibc2.5-x86_64 mysql

 

#加入环境变量

shell> export PATH=$PATH:/usr/local/mysql/bin

#or

shell> vi ~/.bash_profile

export PATH=$PATH:/usr/local/mysql/bin

 

shell> source ~/.bash_profile

 

 

 

创建目录并初始化

shell> cd mysql

shell> mkdir mysql-files

shell> chmod 750 mysql-files

shell> chown -R mysql .

shell> chgrp -R mysql .

shell> bin/mysqld --initialize --user=mysql

 

#######mysqld --initialize-insecure自动生成无密码的root用户;

#######mysqld --initialize是自动生成随机密码用户

 

 

# bin/mysqld --initialize --user=mysql

2017-07-28T08:51:56.297979Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).

2017-07-28T08:52:00.158925Z 0 [Warning] InnoDB: New log files created, LSN=45790

2017-07-28T08:52:00.706047Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.

2017-07-28T08:52:00.782558Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 0524601a-7372-11e7-81cb-000c294f09b9.

2017-07-28T08:52:00.785616Z 0 [Warning] Gtid table is not ready to be used. Table ‘mysql.gtid_executed‘ cannot be opened.

2017-07-28T08:52:00.787531Z 1 [Note] A temporary password is generated for [email protected]: iInaInXY09%c

注意这里给的自动生成随机密码

 

 

shell> bin/mysql_ssl_rsa_setup

 

# bin/mysql_ssl_rsa_setup

Generating a 2048 bit RSA private key

.........+++

....................................................+++

writing new private key to ‘ca-key.pem‘

-----

Generating a 2048 bit RSA private key

............+++

.........+++

writing new private key to ‘server-key.pem‘

-----

Generating a 2048 bit RSA private key

..................................................................................................+++

..........................................................+++

writing new private key to ‘client-key.pem‘

-----

 

 

 

修改权限并启动数据库

shell> chown -R root .

shell> chown -R mysql data mysql-files

shell> cp -a ./support-files/my-default.cnf /etc/my.cnf

shell> cp -a support-files/mysql.server /etc/init.d/mysqld

 

shell> chkconfig --add mysqld ###把mysql注册为开机启动的服务

shell> chkconfig --list mysqld

 

shell> bin/mysqld_safe --user=mysql&

shell> /etc/init.d/mysqld restart

 

 

# bin/mysqld_safe --user=mysql&

[1] 4510

[[email protected] mysql]# 2017-07-28T08:54:16.946452Z mysqld_safe Logging to ‘./data/oracle11gr203db.err‘.

Logging to ‘./data/oracle11gr203db.err‘.

2017-07-28T08:54:17.055256Z mysqld_safe Starting mysqld daemon with databases from ./data

2017-07-28T08:54:17.661300Z mysqld_safe mysqld from pid file ./data/oracle11gr203db.pid ended

 

/etc/init.d/mysqld restart

 

 

MySQL server PID file could not be found! [FAILED]

Starting MySQL.Logging to ‘/usr/local/mysql/data/oracle11gr203db.err‘.

. [ OK ]

[1]+ Done bin/mysqld_safe --user=mysql

 

 

# service mysqld status

MySQL running (5053) [ OK ]

 

# ps -ef|grep mysql

root 4961 1 0 17:08 pts/0 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/oracle11gr203db.pid

mysql 5053 4961 0 17:08 pts/0 00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/data/oracle11gr203db.err --pid-file=/usr/local/mysql/data/oracle11gr203db.pid

root 5102 4194 0 17:10 pts/3 00:00:00 grep mysql

 

# netstat -anpt

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1624/sshd

tcp 0 52 172.168.183.148:22 172.168.183.1:58682 ESTABLISHED 3905/sshd

tcp 0 0 :::22 :::* LISTEN 1624/sshd

tcp 0 0 :::3306 :::* LISTEN 5053/mysqld

 

 

 

 

#mysql服务的开启和关闭

shell> /etc/init.d/mysqld start 或者 service mysqld start 或者 bin/mysqld_safe&

shell> /etc/init.d/mysqld stop 或者 service mysqld stop 或者 bin/mysqladmin -uroot -p

 

 

 

登录MySQL

shell> mysql -uroot -piInaInXY09%c

 

# mysql -uroot -piInaInXY09%c

mysql: [Warning] Using a password on the command line interface can be insecure.

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 4

Server version: 5.7.17

 

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

 

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

 

Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement.

 

mysql>

mysql>

mysql>

mysql>

mysql> show databases;

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

mysql>

 

第一次登录需要重置密码

设置密码,以下两种方式均可:

1---mysql> SET PASSWORD FOR ‘root‘@‘localhost‘ = PASSWORD(‘Mysqlpassw0rd.‘);

 

2---mysql> alter user ‘root‘@‘localhost‘ identified by ‘Mysqlpassw0rd.‘;

 

 

mysql> ALTER USER ‘root‘@‘localhost‘ IDENTIFIED BY ‘root123456‘;

Query OK, 0 rows affected, 1 warning (0.00 sec)

 

mysql> SET PASSWORD FOR ‘root‘@‘localhost‘ = PASSWORD(‘root123456‘);

Query OK, 0 rows affected, 1 warning (0.00 sec)

 

mysql> use mysql

mysql> select Host, User, authentication_string, plugin,password_expired from user where user=‘root‘ and host=‘root‘ or host=‘localhost‘;

 

 

 

 

新安装的MySQL5.7, mysql数据库下已经没有password这个字段了,password字段改成了

authentication_string

 

所以更改语句替换为

update MySQL.user set authentication_string=password(‘root‘) where user=‘root‘ ;

 

 

 

 

忘记重改密码

 

shell> mysqld_safe --user=mysql --skip-grant-tables --skip-networking &

 

 

# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &

[1] 3976

[[email protected] data]# 2017-07-28T08:09:08.347428Z mysqld_safe Logging to ‘/usr/local/mysql/data/oracle11gr203db.err‘.

2017-07-28T08:09:08.361474Z mysqld_safe Logging to ‘/usr/local/mysql/data/oracle11gr203db.err‘.

2017-07-28T08:09:08.469226Z mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data

 

# service mysqld status

MySQL running (4087) [ OK ]

 

# ps -ef|grep mysql

root 3976 3955 0 16:09 pts/0 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --user=mysql --skip-grant-tables --skip-networking

mysql 4087 3976 1 16:09 pts/0 00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --skip-grant-tables --skip-networking --log-error=/usr/local/mysql/data/oracle11gr203db.err --pid-file=/usr/local/mysql/data/oracle11gr203db.pid

root 4130 3955 0 16:09 pts/0 00:00:00 grep mysql

这种启动没有监听端口!

 

 

shell> mysql -u root mysql

新设置用户或更改密码后需用flush privileges刷新MySQL的系统权限相关表,否则会出现拒绝访问,还有一种方法,就是重新启动mysql服务器,来使新设置生效。

mysql> SET PASSWORD FOR ‘root‘@‘localhost‘ = PASSWORD(‘root123456‘);

mysql> flush privileges;

mysql> use mysql

mysql> select Host, User, authentication_string, plugin,password_expired from user where user=‘root‘ and host=‘root‘ or host=‘localhost‘;

 

 

 

 

mysql 正在使用的 my.cnf 配置文件在哪个位置

shell> mysql --help | grep my.cnf

 

 

# mysql --help | grep my.cnf

order of preference, my.cnf, $MYSQL_TCP_PORT,

/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

 

 

 

# ll /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

ls: cannot access /etc/my.cnf: No such file or directory

ls: cannot access /etc/mysql/my.cnf: No such file or directory

ls: cannot access /usr/local/mysql/etc/my.cnf: No such file or directory

ls: cannot access /root/.my.cnf: No such file or directory

 

我第一次安装好MySQL 5.7.17 时并没用创建/etc/my.cnf

 

# cp -a ./support-files/my-default.cnf /etc/my.cnf

# ll /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

ls: cannot access /etc/mysql/my.cnf: No such file or directory

ls: cannot access /usr/local/mysql/etc/my.cnf: No such file or directory

ls: cannot access /root/.my.cnf: No such file or directory

-rw-r--r-- 1 root mysql 1126 Nov 28 2016 /etc/my.cnf

 

 

将/etc/my.cnf移动到/usr/local/mysql/

shell> mv /etc/my.cnf /usr/local/mysql/

 

 

修改数据库监听端口

 

已将my.cnf移动到/usr/local/mysql/

修改改配置文件,

shell>vi /usr/local/mysql/my.cnf

 

port = 3399 ##修改port参数

 

 

重启数据库

shell> service mysqld restart

# service mysqld restart

Shutting down MySQL.. [ OK ]

Starting MySQL.. [ OK ]

 

 

检查端口

shell> netstat -anpt

 

# netstat -anpt

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1624/sshd

tcp 0 0 172.168.183.148:22 172.168.183.1:58682 ESTABLISHED 3905/sshd

tcp 0 0 :::22 :::* LISTEN 1624/sshd

tcp 0 0 :::3399 :::* LISTEN 5498/mysqld

 

 

参考文档

linux mysql5.7.17安装教程

https://jingyan.baidu.com/article/5553fa82a9858365a23934e1.html

 

Mysql5.7Linux安装详细步骤

http://www.2cto.com/database/201701/584468.html

 

linux下mysql安装

http://blog.csdn.net/bao19901210/article/details/51917641

 

在Linux系统上卸载自带的mysql插件

http://blog.csdn.net/qq_16066381/article/details/56300558

 

以上是关于Linux安装MySQL5.7的主要内容,如果未能解决你的问题,请参考以下文章

linux安装教程

linux 安装软件后 怎么检查安装是不是成功

linux vim安装

linux 6 rpm怎么安装

如何安装Linux?

在linux中如何安装软件?