linux安装mysql5.6

目录

准备工作

运行环境

确认你的安装版本

下载MySQL

安装MySQL

准备安装环境

编译和安装

配置MySQL

单实例配置

单实例配置方法

添加防火墙

启动MySQL

重启MySQL

多实例配置

什么是多实例

多实例配置方法

创建启动文件

初始化数据库

配置防火墙

启动MySQL

登陆MySQL

重启MySQL

准备工作

运行环境

本文的运行环境如下

系统版本

CentOS7最小化安装:

Linux version 3.10.0-123.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.2 20140120 (Red Hat 4.8.2-16) (GCC) ) #1 SMP Mon Jun 30 12:09:22 UTC 2014

mysql版本

mysql-5.6.25


确认你的安装版本

mysql分为开发版本和稳定版本(GA),开发版本拥有最新的特性,但是并不稳定,也没有完全经过测试,可能存在严重的bug,而稳定版本是经过了长时间的测试,消除了具有已知的bug,其稳定性和安全性都得到一定的保障。

对于一个mysql的版本号如:mysql-5.6.1-m1,这个版本号意味着什么呢?
1.对于5.6.1的解释:第一个数字5代表了文件格式,第二个数字6代表了发行级别,第三个数字1代表了版本号。更新幅度较小时,最后的数字会增加,出现了重大特性更新时,第二个数字会增加,文件格式改变时,第一个数字会增加 
2.对于m1的解释:这是用来表明这个mysql版本的稳定性级别的,如果没有这个后缀,那么这个版本就是一个稳定版(GA);如果这个后缀是mN(例如m1,m2)格式,表明了这个版本加入了一些经过彻底测试的新特性,可以认为这是一个试生产的模具;如果这个后缀是rc,表明了这是一个候选版本,已经修改了已知的重要bug,但是没有经过足够长时间的使用来确认所有的bug已经被修复。

一旦选择了版本号,就要选择使用哪个发行版,你可以使用二进制发行版如RPM包或Zip压缩包等,但是如果你要实现如下的功能,就要选择源码安装(本文正是选择源码安装的方式):
1.l把mysq安装到指定位置 
2.l使用mysql的一些特性(标准的二进制版本中并没有这些特性)如:TCP封包支持,调试mysql 
3.二进制版本中默认支持所有的字符集,但你可以在编译安装源码时指定字符集,从而使得安装的mysql更小

下载mysql

在这里下载mysql:http://dev.mysql.com/downloads/mysql/

我选择的是这个:

下载完后需要检查文件的MD5,以确认是否从官网下载的原版本(以防被人篡改过该软件)

我从windows下载后上传到linux后,使用md5sum命令来检查:

[root@localhost src]# md5sum mysql-5.6.25.tar.gz 
37664399c91021abe070faa700ecd0ed mysql-5.6.25.tar.gz

可以看出,与上图中的MD5是一致的,如果不一致,就要更换一个镜像地址来下载mysql。

安装mysql

准备安装环境

首先检查是否已经安装过mysql:

[root@localhost src]# rpm -qa | grep mysql

有的话就卸载掉以前安装的mysql:

[root@localhost src]# rpm -e --nodeps xxx(xxx是搜索结果)

并删除所有的相关文件:

/etc/my.cnf

编译和安装

安装编译代码所需要的包

[root@localhost src]# yum -y install make gcc-c++ cmake bison-devel ncurses-devel libaio
[root@localhost src]# yum install libaio libaio-devel -y
[root@localhost src]# yum install perl-Data-Dumper -y
[root@localhost src]# yum install net-tools -y

解压安装包并编译安装

[root@localhost src]# tar xvf mysql-5.6.25.tar.gz
[root@localhost src]# cd mysql-5.6.25
[root@localhost mysql-5.6.25]#cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci

编译成功

[root@localhost src]# make && make install

至此,mysql安装完成

配置mysql

检查系统是否已经有mysql用户,如果没有则创建

[root@localhost mysql-5.6.25]# cat /etc/passwd | grep mysql
[root@localhost mysql-5.6.25]# cat /etc/group | grep mysql

创建mysql用户(但是不能使用mysql账号登陆系统)

[root@localhost mysql-5.6.25]# groupadd mysql -s /sbin/nologin
[root@localhost mysql-5.6.25]# useradd -g mysql mysql

修改权限

[root@localhost mysql-5.6.25]# chown -R mysql:mysql /usr/local/mysql

至此,mysql安装完毕

下面有两种配置方式,推荐按照多实例配置的方式

单实例配置

单实例配置方法

进入安装路径

[root@localhost mysql-5.6.25]# cd /usr/local/mysql

进入安装路径,执行初始化配置脚本,创建系统自带的数据库和表

[root@localhost mysql]# scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

注:在启动MySQL服务时,会按照一定次序搜索my.cnf,先在/etc目录下找,找不到则会搜索"$basedir/my.cnf",在本例中就是 /usr/local/mysql/my.cnf,这是新版MySQL的配置文件的默认位置!

注意:在CentOS 7版操作系统的最小安装完成后,在/etc目录下会存在一个my.cnf,需要将此文件更名为其他的名字,如:/etc/my.cnf.bak,否则,该文件会干扰源码安装的MySQL的正确配置,造成无法启动。

在使用"yum update"更新系统后,需要检查下/etc目录下是否会多出一个my.cnf,如果多出,将它重命名成别的。否则,MySQL将使用这个配置文件启动,可能造成无法正常启动等问题。

添加防火墙

[root@localhost mysql]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
[root@localhost mysql]# firewall-cmd --reload
 

启动mysql

添加服务,拷贝服务脚本到init.d目录,并设置开机启动

 

[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysql
[root@localhost mysql]# chkconfig mysql on
[root@localhost mysql]# service mysql start --启动MySQL

 

查看mysql是否启动成功

[root@localhost mysql]# netstat -lntp | grep 3306

如果mysql没有启动成功,到目录/usr/local/mysql/data下查看错误日志

[root@localhost data]# tail localhost.localdomain.err (localhost.localdomain是主机名)

如果没有生成日志目录,则mysql安装没有成功(再重新编译安装一次)

重启mysql

首先杀死mysql进程

[root@localhost 3306]# pkill mysqld

然后检查是否已经杀死mysql进程

[root@localhost 3306]# netstat -lntp | grep 3306

此时shell没有任何输出,表明已经杀死了mysql进程

然后重启mysql并再次检查是否启动成功

[root@localhost 3306]# service mysql start
[root@localhost 3306]# netstat -lntp | grep 3306

 

多实例配置

什么是多实例

简单地说,就是在一台机器上开启多个不同的服务端口,运行多个mysql服务进程,这些服务进程通过不同socket监听不同服务端口来提供各自的服务。

这些mysql多实例公用一套mysql安装程序,使用不同的my.cnf配置文件、启动程序、数据文件,在提供服务时,多实例在逻辑上看起来是各自独立的,多个实例之间根据配置文件的设定值,来取得相关服务器的硬件资源

多实例配置方法

在本文中,通过在mysql上开启两个端口(3306和3307来配置多实例,因为下面的主从同步要使用这两个端口来模拟)

创建目录(log目录是存放mysql日志的地方)

[root@localhost mysql]# mkdir -p /data/{3306,3307}/data
[root@localhost mysql]# mkdir -p /data/{3306,3307}/log

在/data/3306中新建my.cnf

[root@localhost mysql]# cd /data/3306
[root@localhost mysql]# vi my.cnf

把如下内容拷贝到该文件中

 

[client]
port = 3306
socket = /data/3306/mysql.sock

[mysqld]
port=3306
socket = /data/3306/mysql.sock
pid-file = /data/3306/data/mysql.pid
basedir = /usr/local/mysql
datadir = /data/3306/data
server-id=1
#log-bin=mysql-bin
#log-bin-index= mysql-bin.index

# LOGGING
log_error=/data/3306/log/mysql-error.log
slow_query_log_file=/data/3306/log/mysql-slow.log
slow_query_log=1

 

同样地,在/data/3307中新建my.cnf

[root@localhost mysql]# cd /data/3307
[root@localhost mysql]# vi my.cnf

把如下内容拷贝到该文件中(把上面的3306改为3307,还有server-id的值)

 

[client]
port = 3307
socket = /data/3307/mysql.sock

[mysqld]
port=3307
socket = /data/3307/mysql.sock
pid-file = /data/3307/data/mysql.pid
basedir = /usr/local/mysql
datadir = /data/3307/data
server-id=3
#log-bin=mysql-bin
#log-bin-index= mysql-bin.index

# LOGGING
log_error=/data/3307/log/mysql-error.log
slow_query_log_file=/data/3307/log/mysql-slow.log
slow_query_log=1

 

检查一下目录结构,看看有没有把文件放错地方

 

[root@localhost 3307]# tree /data
/data
├── 3306
│ ├── data
│ ├── log
│ └── my.cnf

└── 3307
│ ├── data
│ ├── log
│ └── my.cnf

 

创建启动文件

在/data/3306中新建mysql启动文件

[root@localhost mysql]# cd /data/3306
[root@localhost mysql]# vi mysql

把如下内容拷贝到该文件中

 

#!/bin/sh
port=3306
mysql_user="root"
mysql_pwd=""
CmdPath="/usr/local/mysql/bin"

#startup function

function_start_mysql()
{
printf "Starting MySQL...\n"
/bin/sh ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf 2>&1 > /dev/null &
}

#stop function

function_stop_mysql()
{
printf "Stoping MySQL...\n"
${CmdPath}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S /data/${port}/mysql.sock shutdown
}

#restart function

function_restart_mysql()
{
printf "Restarting MySQL...\n"
function_stop_mysql
sleep 2
function_start_mysql
}

case $1 in
start)
function_start_mysql
;;

stop)
function_stop_mysql
;;

restart)
function_restart_mysql
;;
*)

printf "Usage: /data/${port}/mysql {start|stop|restart}\n"
esac

 

同理,在/data/3307中新建mysql启动文件

[root@localhost mysql]# cd /data/3307
[root@localhost mysql]# vi mysql

把如下内容拷贝到该文件中

 

#!/bin/bash

port=3307
mysql_user="root"
mysql_pwd=""
CmdPath="/usr/local/mysql/bin"

#startup function

function_start_mysql()
{
printf "Starting MySQL...\n"
/bin/sh ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf 2>&1 > /dev/null &
}

#stop function

function_stop_mysql()
{
printf "Stoping MySQL...\n"

${CmdPath}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S /data/${port}/mysql.sock shutdown
}

#restart function

function_restart_mysql()
{
printf "Restarting MySQL...\n"

function_stop_mysql
sleep 2
function_start_mysql
}

case $1 in
start)
function_start_mysql
;;
stop)
function_stop_mysql
;;
restart)
function_restart_mysql
;;
*)
printf "Usage: /data/${port}/mysql {start|stop|restart}\n"
esac

 

修改文件拥有者和权限

[root@localhost 3307]# chown -R mysql:mysql /data

[root@localhost 3307]# find /data -name mysql -exec chmod 700 {} \;

添加mysql启动路径

 

[root@localhost 3307]# echo 'export PATH=$PATH:/usr/local/mysql/bin' >>/etc/profile

[root@localhost 3307]# source /etc/profile

[root@localhost 3307]# echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin

 

可以看到mysql路径已经添加到了启动路径中

初始化数据库

 

[root@localhost scripts]# cd /usr/local/mysql/scripts

[root@localhost scripts]# ./mysql_install_db --defaults-file=/data/3306/my.cnf --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/data

[root@localhost scripts]# ./mysql_install_db --defaults-file=/data/3307/my.cnf --user=mysql --basedir=/usr/local/mysql --datadir=/data/3307/data

 

配置防火墙

 

[root@localhost scripts]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
success

[root@localhost scripts]# firewall-cmd --zone=public --add-port=3307/tcp --permanent
success

[root@localhost scripts]# firewall-cmd --reload
success

 

启动mysql

分别启动两个端口

 

[root@localhost scripts]# /data/3306/mysql start
Starting MySQL...

[root@localhost scripts]# /data/3307/mysql start
Starting MySQL...

[root@localhost scripts]# netstat -lntp | grep 330
tcp6 0 0 :::3306 :::* LISTEN 33556/mysqld
tcp6 0 0 :::3307 :::* LISTEN 34204/mysqld

 

可以看到两个端口都已经启动成功

登陆mysql

刚安装完的mysql是没有登陆密码的

[root@localhost scripts]# mysql -S /data/3306/mysql.sock

如果不成功,检查/data/3306/log目录下的mysql-error.log日志,逐一排除错误

如果登陆成功,下面就修改登录密码(不建议在shell环境下修改密码,否则别人只要查看命令历史就能看到密码(前提是你没有情况命令历史))

mysql> update mysql.user set password=password("123456") where user='root';
mysql> flush privileges;

同理,使用上面的方法修改3307的登陆密码

要把上面更改后的密码写回到mysql的启动文件中(否则每次启动、关闭、重启mysql都要输入密码)

[root@localhost 3306]# sed -i 's/mysql_pwd=\"\"/mysql_pwd=\"123456\"/g' /data/3306/mysql
[root@localhost 3306]# sed -i 's/mysql_pwd=\"\"/mysql_pwd=\"123456\"/g' /data/3307/mysql

注意把上面的123456改为设置的密码

重启mysql

[root@localhost 3306]# /data/3306/mysql restart
[root@localhost 3306]# netstat -lntp | grep 330
tcp6 0 0 :::3306 :::* LISTEN 35430/mysqld

可以看到3306端口重启成功,同理可以重启3307端口

至此,mysql-5.6.25在CentOS7上安装完毕

--------------------------------------分割线 --------------------------------------

 

补充:

4. 配置以及初始化MySQL
# cd /usr/local/mysql
4.1 设置MySQL安装目录的权限
# chown -R mysql:mysql /usr/local/mysql
4.2 初始化MySQL
# scripts/mysql_install_db --user=mysql
# cp support-files/mysql.server /etc/init.d/mysqld
4.3 重新设置MySQL安装目录的权限(除data目录外,其余所有目录及文件均修改用户为root,组不变)
# chown -R root .
# chown -R mysql data
4.4 启动mysql_safe
# bin/mysqld_safe --user=mysql &
4.5 设置MySQL的root帐号密码
- 自动设置:# ./bin/mysql_secure_installation

- 手动置:# ./bin/mysqladmin -u root password '<PASSWORDHERE>'

 

 

 

授权法。例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。 
  GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%'IDENTIFIED BY 'mypassword' WITH GRANT OPTION; 
  如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码 
  GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3'IDENTIFIED BY 
  'mypassword' WITH GRANT OPTION; 
  我用的第一个方法,刚开始发现不行,在网上查了一下,少执行一个语句 mysql>FLUSH RIVILEGES 
  使修改生效,就可以了

转载于:https://www.cnblogs.com/zhaosiwen/p/5824271.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/430191.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring 4 MVC入门实例

Spring 4发布很长一段时间了&#xff0c;从 Spring 3 到 Spring 4 有巨大的改变。网上还有很多教程是基于 Spring 3.0 的&#xff0c;甚至 Spring 2.5&#xff0c;要想按照网上的教程“按图索骥”还是挺困难的。纵有一些 Spring 4.0 MVC 的教程例子&#xff0c;也往往是 “Spri…

python写入二进制文件的库_python之写入二进制文件

概述 计算机都是以二进制存储文件的&#xff0c;如mp3、图片等&#xff0c;文本文件也是如此&#xff0c;在本节中以二进制模式写入文件 写文件的很多操作&#xff0c;与读文件的操作是相同的&#xff0c;建议先看 读取二进制文件 打开文件 读写文件&#xff0c;要先通过内置op…

gulp插件gulp-ruby-sass和livereload插件

gulp-ruby-sass是gulp的一个插件&#xff0c;主要是用来实现sass编译&#xff0c;livereload插件主要是实现文件保存时浏览器自动刷新&#xff0c;避免了手动f5的频繁的操作 准备工作&#xff1a;chrome浏览器安装livereload插件&#xff0c;没有安装的可以百度搜索或者FQ下载&…

eclipse 创建 maven web 项目教程

&#xff08;1&#xff09;新建一个Maven 项目 file –> new –> maven project 直接点 next 直接点 next 填写groupid和artifactid&#xff0c;这两个可以随便填&#xff0c;名称而已。填完 finish &#xff08;2&#xff09;将项目转成 Dynamic Web项目 选中项目&#…

sql backup database备份d盘_ClickHouse 备份与恢复

本文转载自 万能修实验室 作者&#xff1a;公先生 ID: dropudatabase我们评估一款数据库产品&#xff0c;除了稳定性和易用性外&#xff0c;数据安全也十分重要&#xff0c;备份与恢复往往是最后一道安全门。但如果备份策略不完善、恢复手段无效&#xff0c;一旦发生数据误删除…

线程启动语句的顺序是否决定线程的执行次序。_详细分析 Java 中启动线程的正确和错误方式

start 方法和 run 方法的比较代码演示:/** * * start() 和 run() 的比较 * * * author 踏雪彡寻梅 * version 1.0 * date 2020/9/20 - 16:15 * since JDK1.8 */public class StartAndRunMethod { public static void main(String[] args) { // run 方法演示 // 输出: name: mai…

webgl 游戏_如何选择 WebGL 框架和引擎?

数据可视化Sugar-百度智能云​cloud.baidu.comSugar 是我们从零开始开发的 BI 产品&#xff0c;可以不用写 SQL 制作报表及大屏页面&#xff0c;上半年我们发布了三维场景功能&#xff0c;可以放到大屏中展现&#xff1a;为了实现这个功能&#xff0c;我们调研了大量 WebGL 相关…

java 正则表达式 替换字符串img标签的路径_正则表达式和有限自动机的应用

1. 为什么谈有限自动机时要谈正则表达式&#xff1f;原因是&#xff1a;正则表达式所匹配的所有字符串所构成的语言可以用有限自动机识别。根本原因是&#xff1a;正则集&#xff08;正则表达式所匹配的所有字符串集合&#xff09;是由右线性文法&#xff08;3型文法&#xff0…

14.6 Spring MVC 测试框架(翻译)

14.6 Spring MVC 测试框架&#xff08;每天翻译一点点&#xff09; Spring MVC测试框架对 Spring MVC 代码提供一流的测试支持 &#xff0c;它拥有一个 fluent API ,可以和JUnit, TestNG 或其它任何测试框架协同使用。 此测试框架基于 spring-test 模块的Servlet API mock obje…

html读取本地txt_手机本地电子书籍阅读器 — 静读天下

在早期山寨按键手机流行的年代手机中必装两款软件莫过于Anyview和Opera浏览器了&#xff0c;一个是本地最佳阅读工具另一个是压缩流量访问网页的利器&#xff0c;时过境迁好多人都早以忘记了这些昔日的王者。曾经那帮挑灯夜读看小说的熊孩子都已经长大了&#xff0c;在难得的休…

华为手机丢失定位网站_手机端网站优化要从网站的设计和定位开始入手

移动端网站优化要从网站的设计和定位开始入手&#xff0c;重要的是简洁易用&#xff0c;切忌复杂&#xff0c;令用户搞不明白找不到想用的。对于搜索引擎而言&#xff0c;好的用户访问体验也是排名的最佳标准。下面小编就来分析一下设计对手机端网站优化排名的影响。1、使用规范…

安卓接受后台数据转换解析出错_安卓手机内存越大,速度就会越快?

与非网 2 月 18 日讯&#xff0c;现在安卓手机的内存在产品规划上越来越大&#xff0c;2020 年发布的旗舰手机运行内存已经拓展到惊人的 10GB 以上&#xff0c;而这个运存大小已经超过笔记本主流的 8GB 内存&#xff0c;手机到底需要这么大的内存吗&#xff1f;安卓手机的内存为…

ipv6地址格式_IPV6与IPV4的差异

ipv6相比&#xff0c;我们现在的IPV4,有什么优势&#xff0c;有什么差异IPv6的路由表更小,IPv6的组播支持以及对流的支持增强,IPv6加入了对自动配置的支持,IPv6具有更高的安全性. 与IPV4相比&#xff0c;IPV6具有以下几个优势&#xff1a;IPv6具有更大的地址空间。IPv4中规定IP…

反序列化对象列表发生异常_通过反序列化漏洞,黑客能做什么呢?

在之前的文章中讲解了一个反序列化的例子&#xff0c;我们已经知道&#xff0c;通过反序列化漏洞&#xff0c;黑客可以调用到Runtime.exec()来进行命令执行。换一句话说&#xff0c;黑客已经能够在服务器上执行任意的命令&#xff0c;这就相当于间接掌控了你的服务器&#xff0…

tcl之内容

转载于:https://www.cnblogs.com/chip/p/5847126.html

js密码强度正则表达式_知道这20个前端正则表达式,能让你做项目时少写1000行甚至一万行

正则表达式&#xff0c;一个十分古老而又强大的文本处理工具&#xff0c;仅仅用一段非常简短的表达式语句&#xff0c;便能够快速实现一个非常复杂的业务逻辑。熟练地掌握正则表达式的话&#xff0c;能够使你的开发效率得到极大的提升。正则表达式经常被用于字段或任意字符串的…

腾讯视频客户端导出MP4格式

腾讯视频下载下来之后是.qlv格式&#xff0c;这种格式只能使用客户端播放。感觉挺蛋疼的&#xff0c;Mp4好不容易让各种设备都可以统一播放视频了&#xff0c;这样一搞感觉又倒退了几十年&#xff0c;关键的是&#xff0c;有些资源是腾讯独家的&#xff0c;不装客户端就看不了&…

labview项目实例_labview操作者框架

0.引言操作者框架适合于多并行任务的项目。在这样的项目中&#xff0c;多个并行任务之间往往需要相互通信&#xff0c;传统的解决办法是&#xff0c;每个任务一个队列&#xff0c;一个while循环&#xff0c;多任务项目需要在一个程序框图使用多个while&#xff0c;不好看。NI说…

eclipse发布web不带项目名的url

默认发布后访问地址是&#xff1a; http://localhost:8080/huanle/ 要达到的效果是&#xff1a; http://localhost:8080/ 不带项目名的url的好处是&#xff0c;不用再在每个地址前加<% path%>了&#xff1a; &#xff08;很烦有木有&#xff09; 操作方法&#x…

php 随机在文章中添加锚文本_页面SEO优化的锚文本优化概念

SEO优化分为结构优化和页面优化&#xff0c;页面的SEO优化中其中一个重点是锚文本的建设。锚文本的概念就是网站的内部链接&#xff0c;较为常见的就是将文章中的关键词作为锚文本。但在具体建设当中&#xff0c;很多网站对锚文本的处理出现了很多错误。这是因为对锚文本的优化…