7

mysql5.7在centos上安装的完整教程以及相关的“坑”

 3 years ago
source link: https://blog.csdn.net/lifetragedy/article/details/53333616
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

安装前的准备

Step1: 如果你系统已经有mysql,如一般centos自带mysql5.1系列,那么你需要删除它,先检查一下系统是否自带mysql

yum list installed | grep mysql


Step2: 删除系统自带的mysql及其依赖命令
yum -y remove mysql-libs.x86_64


Step3: 给CentOS添加rpm源,并且选择较新的源命令
wget dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
yum localinstall mysql-community-release-el6-5.noarch.rpm
yum repolist all | grep mysql
yum-config-manager --disable mysql55-community
yum-config-manager --disable mysql56-community
yum-config-manager --enable mysql57-community-dmr
yum repolist enabled | grep mysql



Step4:安装mysql 服务器命令
yum install mysql-community-server

CENTOS7上安装MYSQL5.7还有一个巨坑


之前的Linux体系中数据库大局部是mysql,不外自从被sun收买以后,便出用散成正在centos那些开源Linux体系中了,那末若是念用的话便须要本身装置了,起首centos7 已没有支撑mysql。


以前的Linux系统中数据库大部分是mysql,不过自从被sun收购之后,就没用集成在centos这些开源Linux系统中了,那么如果想用的话就需要自己安装了,首先centos7 已经不支持mysql,因为收费了你懂得,所以内部集成了mariadb,而安装mysql的话会和mariadb的文件冲突,所以在运行以下命令前:

yum install mysql-community-server

需要先卸载掉mariadb,以下为卸载mariadb步骤
rpm -qa | grep mariadb

当检查出了系统自带的mariadb后如版本为:mariadb-libs-5.5.37-1.el7_0.x86_64 那么使用以下命令:
rpm -e --nodeps mariadb-libs-5.5.37-1.el7_0.x86_64

强制卸了它,再安装mysql5.7即可。


Step5: 启动mysql命令
service mysqld start



Step6: 查看mysql是否自启动,并且设置开启自启动命令
chkconfig --list | grep mysqld
chkconfig mysqld on


mysql5.7安装完后如何开启远程root包括远程用户权限

mysql5.7对于安全模块进行了升级,因此如果你想像以前那样在安装完mysql后直接以mysql -u root登录进去再通过一系列的sql命令来更改权限但是这在mysql5.7上是行不通的,按照以前的做法,你会在面临mysql5.7碰到这样的一个报错“access denied for user root@localhost” ,因此请按照以下使用说明操作。


Step1: 停止mysqld服务并使用mysqld safe启动
service mysqld stop
mysqld_safe --user=mysql --skip-grant-tables --skip-networking &

RHEL7.0系列的发行版(例如CentOs 7),特征是使用了systemd来代替原有的init,作为第一支启动的程序。此时网络上面所说的mysqld_secure已经不可使用。但是查看官方文档后,得知在这种情况下mysqld可以支持部分mysqld_safe的参数,命令如下:

mysqld   --user=mysql --skip-grant-tables --skip-networking &


Step2:登录mysql


此时,你在mysql服务器上使用
mysql -uroot -p


就可以登录mysql了


Step3: 更改mysql安全密码


先説一下原因,mysql5.7出现这样的问题,是因为MYSQL5.6之后,加强了对安全性的管控,认为root用户进行mysql操作是一种危险的行为,于是限制了root用户登录mysql()。但是我们可以通过修改Mysql中user表的方法解决该问题
(网络上还有一种做法是查看/var/log/mysql.log,该文件内有安装后Mysql生成的随机密码,然后用文件里的密码正常登录即可,有兴趣者自己可以试下,此处使用正规操作步骤)
mysql> SET PASSWORD = PASSWORD('ur password here');

如果出现以下信息:

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement 


请先运行
update mysql.user set authentication_string=password('newpassword') where user='root'



Step4:更改mysql root的密码(和Step3中保持一致)
update mysql.user set authentication_string=password('newpassword') where user='root'

之前的mysql版本为:

而mysql5.7已经把PASSWORD字段改名成了"authentication_string"这个名字了,此处需要注意了。


Step5:建立可供远程连接的root用户
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'ur password here' WITH GRANT OPTION;



Step6:在远程装个mysql workbench然后用远程root登录,爱干吗干吗吧


MYSQL核心配置文件示例

虚拟CPU 6C
内存:6GB
优化过的配置如下:
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html


[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.


join_buffer_size = 128M
sort_buffer_size = 6M
read_rnd_buffer_size = 4M


#deprecate this option after mysql5.5 default-character-set = utf8


character-set-server=utf8
open_files_limit    = 10240
back_log = 384
max_connections = 500
#deprecate this option after mysql5.5 table_cache = 512K
max_allowed_packet =16M
query_cache_size = 384M
table_open_cache = 512 
key_buffer_size = 384M 


datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock


# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0


log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid


slow_query_log_file = /var/log/mysqld-slow-query.log  
log-short-format
long-query-time = 3  
#log-long-format  
#log-slow-admin-statements  
log-queries-not-using-indexes

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK