全国大学生大数据技能竞赛 —— 分布式平台搭建
/该总结中均直接使用压缩包进行解压,并未涉及到yum源
基础部分
一、基础搭建
1、更改主机名
● 更改主机名为master:hostnamectl set-hostname master
同理修改slave1和slave2的主机名
hostnamectl命令详解
(1)查看主机相关信息:hostnamectl
或者hostnamectl status
(2)修改主机名:hostnamectl set-hostname 新主机名
2、配置hosts文件(三台机器都要执行)
● 编辑hosts文件:vim /etc/hosts
编辑etc中的hosts文件
输入各节点的IP和主机名
3、关闭防火墙
● 关闭防火墙:systemctl stop firewalld
● 查看防火墙状态:systemctl status firewalld
4、时间同步
4.1 选择时区
● 选择时区:tzselect
● 将环境变量写入/etc/profile
文件当中:
echo “TZ='Asia/Shanghai';export TZ" >> /etc/profile
source /etc/profile
4.2 建立 ntp 时间同步
● 下载 ntp :yum install -y ntp
● 可以使用 rpm 查看是否下载了ntp :rpm -qa | grep ntp
● 将master设置为时钟源:
vim /etc/ntp.conf
把server.centos相关的给注释掉,因为要将master本地作为时钟源
server xxx.xxx.xxx.xxx #local clock
fudge xxx.xxx.xxx.xxx stratum 10
● 配置好后要重启服务:/bin/systemctl restart ntpd.service
● 在 slave1 和 slave2 上要进行 ntp 同步:ntpdata master
● 制作定时任务:
查看crontab服务是否开启
service crond status Redirecting to /bin/systemctl status crond.service
写入定时任务:crontab -h
选项 | 作用 |
---|---|
-e | 写入一个定时任务,进入文件编辑,然后做具体指令 |
-l | 列出做了哪些任务,可以进行查看 |
* /30 10-17 * * * /usr/sbin.ntpdata master
注意:tzselect命令用于选择时区。要注意的是tzselect只是帮我们把选择的时区显示出来,并不会实际生效,也就是说它仅仅告诉我们怎么样去设置环境变量TZ。(TZ = Time Zone)如果你要永久更改时区,按照tzselect命令提示的信息,在.profile或者/etc/profile中设置正确的TZ环境变量并导出。
参考文章:
Linux tzselect --选择时区
(该部分缺少ntp时间同步,整理完全过程再细学一下这里)
5、配置ssh免密
● 在master上生成公私密钥:ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
● 将 master 的公钥写入authorized_keys文件中,并复制到 slave1 进行公钥认证:
cat /root/.ssh/id_dsa.pub > > /root/.ssh/authorized_keys
scp /root/.ssh/authorized_keys root@slave1:~/.ssh/
或者进行如下命令:
● 将master公钥id_dsa复制到slave1和slave2上,并进行公钥认证(可以通过远程登录进行验证):
ssh-copy-id -i /root/.ssh/id_dsa.pub slave1
ssh-copy-id -i /root/.ssh/id_dsa.pub slave2
● 免密登录slave1:
ssh slave1
exit(退出)
同理可以将master公钥复制到master上或配置其他免密。
DSA:digital signature Algorithm 数字签名。
RSA:既可以数字签名又可以加密。
ssh-keygen常用参数详解
选项 | 详解 |
---|---|
-t | 指定生成密钥的类型,默认使用SSH2d的rsa |
-f | 指定生成密钥的文件名,默认id_rsa(私钥id_rsa,公钥id_rsa.pub) |
-P | 提供旧密码,空表示不需要密码(-P ‘’) |
-N | 提供新密码,空表示不需要密码(-N ‘’) |
-b | 指定密钥长度(bits),RSA最小要求768位,默认是2048位;DSA密钥必须是1024位(FIPS 1862标准规定) |
-C | 提供一个新注释 |
-R hostname | 从known_hosta(第一次连接时就会在家目录.ssh目录下生产该密钥文件)文件中删除所有属于hostname的密钥 |
ssh-copy-id命令详解
(1)作用:ssh-copy-id 将你的公共密钥填充到一个远程机器上的authorized_keys文件中。
(2)语句:ssh-copy-id [-i [公钥在本主机上的路径]] [user@] 远程机器主机名
参考文章:
ssh-keygen常用选项详解
ssh-copy-id命令详解 & 使用ssh-keygen和ssh-copy-id三步实现SSH无密码登录
ssh命令详解
二、安装JDK
● 解压jdk压缩包至/usr/java中:tar -zxvf jdk-8u202-linux-x64.tar.gz -C /usr/java
(在master执行)
● 修改并生效环境变量(在master执行):
此处并未明白环境变量的详解
pwd(查看jdk路径)
vim /etc/profile
添加内容如下:
export JAVA_HOME=/usr/java/jdk1.8.0_202
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
source /etc/profile
● 查看java版本:java -version
这里出现版本与所安装版本不同的情况,即安装为1.8.0_202版本,而此处显示为1.8.0_131版本
● 在master中将JDK复制到slave1和slave2中(master执行)
tar -zcvf /usr/java/jdk1.8.0_202.tar.gz jdk1.8.0_202
scp /usr/java/jdk1.8.0_202.tar.gz root@slave1:/usr
scp /usr/java/jdk1.8.0_202.tar.gz root@slave2:/usr
● 并在slave1和slave2中解压并配置环境变量,检查java版本是否正确
tar常用选项详解
选项 | 详解 |
---|---|
-z | 是否同时具有gz属性 |
-x | 解压缩、提取打包的内容 |
-c | 建立一个压缩,打包文档 |
-v | 显示压缩或者打包的内容 |
-f | 使用文件名,在f后面要接压缩后的文件的名字,只要用到tar命令,-f选项是必须要用的,-f参数在使用的时候一定排在其他参数的后面,在最右边 |
-C | 切换到指定目录,表示指定解压缩包的内容和打包的内容存放的目录 |
(1)解压tar.gz文件:tar -zxvf 解压文件路径 -C 解压后存放的路径
(2)压缩文件夹为tar.gz文件:tar -zcvf 打包后生成的文件名全路径 要打包的目录
scp命令常用详解
(1)从远处复制文件到本地目录
单个文件:scp [用户名]@[服务器名或ip]:[远程机器文件的路径] [本地的指定目录]
递归复制整个目录的文件:scp -r [用户名]@[服务器名或ip]:[远程机器文件夹的路径] [本地的指定目录]
(2)上传本地文件到远程机器指定目录
单个文件:scp [本地文件的路径] [用户名]@[服务器名或ip]:[远程机器的指定目录]
递归复制整个目录的文件:scp -r [本地文件夹的路径] [用户名]@[服务器名或ip]:[远程机器的指定目录]
参考文章:
Linux压缩打包命令——tar、zip、unzip
Linux下压缩某个文件夹(文件夹打包)
Linux安装JDK1.8后,java -version仍然显示版本为1.7的问题
Linux scp命令参数详解
三、安装zookeeper
● 解压zookeeper至/usr/zookeeper中:tar -zxvf zookeeper-3.4.5-cdh5.10.0.tar.gz -C /usr/zookeeper
在zookeeper目录中,创建配置中所需要的zkdata和zkdatalog两个文件夹(在master执行):
cd /usr/zookeeper/zookeeper-3.4.5-cdh5.10.0
mkdir zkdata
mkdir zkdatalog
● 配置文件zoo.cfg(在master执行)
将simple配置文件拷贝为默认配置文件:
cd /usr/zookeeper/zookeeper-3.4.5-cdh5.10.0/conf
mv zoo_simple.cfd zoo.cfd
对 zoo.cfd文件配置如下:vim zoo.cfg
ticktime=2000
initLimit=10
syncLimit=5
dataDir=/usr/zookeeper/zookeeper-3.4.5-cdh5.10.0/zkdata
clientPort=2181
dataLogDir=/usr/zookeeper/zookeeper-3.4.5-cdh5.10.0/zkdatalog
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
● 进入zkdata文件夹,创建myid文件,用于表示是几号服务器
cd /usr/zookeeper/zookeeper-3.4.5-cdh5.10.0/zkdata
vim myid
编辑内容为1,即1号服务器
● 远程发送zookeeper给slave1和slave2,接收后更改myid文件
scp -r /usr/zookeeper root@slave1:/usr
scp -r /usr/zookeeper root@slave2:/usr
● 添加zookeeper环境变量:vim /etc/profile
export ZOOKEEPER_HOME=/usr/zookeeper/zookeeper-3.4.5-cdh5.10.0
export PATH=$PATH:&ZOOKEEPER_HOME/bin
生效:source /etc/profile
● 启动zookeeper集群
● 开启服务:zkServer .sh start
(三台机器均执行)
● 查看状态:zkServer .sh status
(显示一个leader两个follower)
在Zookeeper启动的时候出现了报错,可能是先前的zookeeper是直接对电脑进行强制关机所导致的。
报错代码:Starting zookeeper ... already running as process 5688.
,使用kill -9 杀死线程后,开启及状态均正常
● zookeeper的基本操作
进入Zookeeper客户端:zkCli.sh
1.创建序列化(有序)节点:create -s /hello_node 'hello'
2.创建临时节点:create -e /world_node 'world'
3.获取节点:get /world_node
4.修改节点。
(1)修改节点数据:set /world_node 'hello zookeeper'
(2)再次获取节点数据:get /world_node,则节点数据更改为'hello zookeeper'
5.删除节点。
(1)删除此节点:delete /world_node
(2)再次获取此节点:get /world_node
(3)使用ls命令列出根节点下的所有节点:ls /,“/world_node”节点已被删除。
6.退出Zookeeper客户端:quit
● jps查看进程:
zoo.cfg文件配置详解
参数 | 详解 |
---|---|
tickTime | 基本事件单元,以毫秒为单位。这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每隔 tickTime时间就会发送一个心跳。 |
dataDir | 存储内存中数据库快照的位置,顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。 |
clientPort | 这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。 |
initLimit | 这个配置项是用来配置 Zookeeper 接受客户端初始化连接时最长能忍受多少个心跳时间间隔数,当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒。 |
syncLimit | 这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 5*2000=10 秒 |
server.A = B:C:D | A 表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader |
参考文章:
ZooKeeper配置文件zoo.cfg详解
Zookeeper启动报错 Starting zookeeper … already running as process 5688.
四、安装hadoop
4.1解压 hadoop 安装包
● 解压hadoop至/usr/hadoop中(在master中进行):tar -zxvf hadoop-2.7.7.tar.gz -C /usr/hadoop
● 添加并生效 hadoop 环境变量(三台机器执行):
vim /etc/profile
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.7
export CLASSPATH=$CLASSPATH:$HADOOP_HOME/lib
export PATH=$PATH:$HADOOP_HOME/bin
source /etc/profile
4.2配置 hadoop 各组件
● 编辑 hadoop-env.sh 配置文件
cd $HADOOP_HOME/etc/hadoop
vim hadoop-env.sh
修改java环境变量:export JAVA_HOME=/usr/java/jdk1.8.0_202
● 编辑 core-site.xml 文件
<configuration>
<!-- 定义文件系统的实现,默认是file:///本地文件系统 需要我们改成 hdfs://分布式文件存储系统 -->
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<!-- 临时数据存放的位置(Hadoop安装目录下的临时文件) -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/hadoop-2.7.7/hdfs/tmp</value>
<description>A base for other temporary derectories.</description>
</property>
<!-- 缓冲区大小,实际工作中根据服务器性能动态调整 -->
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<!-- fs.checkpoint.period 同步检查时间,缺省是3600秒1小时。测试时设为20秒 -->
<property>
<name>fs.checkpoint.period</name>
<value>60</value>
</property>
<!-- fs.checkpoint.size 当edit 日志文件大于这个字节数时,即使检查时间没到,也会触发同步 -->
<property>
<name>fs.checkpoint.size</name>
<value>67108864</value>
</property>
</configuration>
*master:在主节点的 ip 或者映射名。
*9000:主节点和从节点配置的端口都是9000。
● 编辑 hdfs-site.xml
<configuration>
<!-- 配置系统自动数据备份数量为2份(默认是3份) -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- NameNode 元数据存放位置(初始化时name文件夹才会生成) -->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/software/hadoop-2.7.7/hdfs/name</value>
<final>true</final>
</property>
<!-- DataNode在本地磁盘存放block的位置(在开启整个集群后,data文件夹才会生成) -->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/software/hadoop-2.7.7/hdfs/data</value>
<final>true</final>
</property>
//后面部分缺少详解,且第一部分讲解时并未填写如下参数
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.hosts</name>
<value>/usr/software/hadoop-2.7.7/conf/datanode-allow.list</value>
<description>允许加入集群的节点列表</description>
</property>
<property>
<name>dfs.hosts.exclude</name>
<value>/usr/software/hadoop-2.7.7/conf/datanode-deny.list</value>
<description>拒绝加入集群的节点列表</description>
</property>
</configuration>
● 修改 yarn-env.sh
写入 java 的环境变量:export JAVA_HOME=
● 修改 yarn-site.xml
<configuration>
<!-- RM对客户端暴露的地址,客户端通过该地址向RM提交应用程序等 -->
<property>
<name>yarn.resourcemanager.address</name>
<value>master:18040</value>
</property>
<!-- RM对AM暴露的地址,AM通过地址想RM申请资源,释放资源等 -->
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:18030</value>
</property>
<!-- RM对外暴露的web http地址,用户可通过该地址在浏览器中查看集群信息 -->
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:18088</value>
</property>
<!-- RM对NM暴露地址,NM通过该地址向RM汇报心跳,领取任务等 -->
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:18025</value>
</property>
<!-- 管理员可以通过该地址向RM发送管理命令等 -->
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:18141</value>
</property>
<!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序 -->
<!-- 指定reduce获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- -->
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapreduce.ShuffleHandler</value>
</property>
</configuration>
● 编辑 mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
添加如下:
<!-- 指定mapreduce运行在yarn集群上面 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
● 修改 master 和 slaves 文件:
vim master
master
vim slaves
slave1
slave2
或者:
编辑 slaves 和 master 文件:
删除localhost
,添加slave1
和slave2
到slaves文件,添加 master
到 master 文件
echo master >master && echo slave1 >slaves && echo slave2 >slaves
● 远程发送zookeeper给slave1和slave2(别忘记配置 hadoop 环境变量)
scp -r /usr/hadoop root@slave1:/usr
scp -r /usr/hadoop root@slave2:/usr
记得修改并生效 slave1 和 slave2 的环境变量
4.3格式化 hadoop 并开启 hadoop 集群
● 在master(主节点)格式化一下hadoop namenode -format
(此时主节点的暂存目录已经生成了)
出现Exiting with status 0
的时候,表示格式化成功(格式化后生成NameNode元数据存放目录)
● 开启 hadoop 集群(仅在master上开启),回到 hadoop 目录:sbin/start-all.sh
后续这张图没搞懂
视频中 id 部分因广告挡住没听懂
hadoop中常用文件夹及作用简介
文件夹名称 | 作用 |
---|---|
bin | shell脚本 |
sbin | shell脚本,如启动hdfs需要用到 |
etc/hadoop | 所有配置文件的路径 |
lib/native | 本地的C程序库 |
hadoop六个配置文件详解
配置文件 | 作用 |
---|---|
core-site.xml | 核心配置文件,主要定义了我们文件访问的格式 hdfs:// |
hadoop-env.sh | 主要配置我们的java路径 |
hdfs-site.xml | 主要定义配置我们的hdfs的相关配置 |
mapred-site.xml | 主要定义我们的mapreduce相关的一些配置 |
slaves | 控制我们的从节点在哪里 datanode nodemanager在哪些机器上 |
yarm-site.xml | 配置我们的resourcemanager资源调度 |
参考文章:
详解Hadoop六个配置文件的作用
namenode崩溃的数据恢复测试
yarn-site.xml参数配置详解
五、安装hbase
(现在master上进行操作,然后再复制到子节点slave1和slave2上)
● 1、创建/usr/hbase,下载并解压至工作路径。
● 2、进入hbase配置目录conf,修改配置文件hbase-env.sh,添加配置变量
cd /usr/hbase/hbase-1.2.4/conf
vim hbase-env.sh
export HBASW_MANAGES_ZK=false
export JAVA_HOME=/usr/java/
export HBASE_CLASSPATH=/usr/Hadoop/Hadoop-2.7.3/etc/Hadoop
解释:一个分布式运行的hbase依赖一个zookeeper集群。所有的节点和客户端都必须能够访问zookeeper。默认的情况下Hbase会管理一个zookeeper集群,即Hbase默认自带一个zookeeper集群。这个集群会随着Hbase的启动而启动。而在实际的商业项目中通常自己管理一个zookeeper集群更便于优化配置提高集群工作效率,但需要配置Hbase。需要修改conf/hbase-env.sh里面的HBASE_MANAGES_ZK来切换。这个值默认是true的,作用是让Hbase启动的时候同时也启动zookeeper。在本实验中,我们采用独立运行zookeeper集群的方式,故将其属性值改为false。
● 3、配置conf/hbase-site.xml文件
<configuration>
<--这个目录是region server的共享目录,用来持久化Hbase-->
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<--Hbase的运行模式。false是单机模式,true是分布式模式-->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.master</name>
<value>hdfs://master:6000</value>
</property>
<--在这里列出zookeeper集群的地址列表,用逗号分隔-->
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
</property>
<--zookeeper的zoo.conf中的配置-->
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/zookeeper/zookeeper-3.4.5-cdh5.10.0</value>
</property>
</configuration>
● 4、配置conf/regionservers,添加子节点
在这里列出了希望运行的全部HRegionServer,一行写一个host(就像Hadoop里面的slaves一样)。列在这里的server会随着集群的启动而启动,集群的停止而停止。
● 5、hadoop配置文件拷入hbase的目录下(当前目录为/usr/hbase/hbase-1.2.4/conf)
cp /usr/Hadoop/Hadoop-2.7.3/rtc/Hadoop/hdfs-site.xml
cp /usr/Hadoop/Hadoop-2.7.3/rtc/Hadoop/core-site.xml
● 6、远程发送hbase到子节点
scp -r /usr/hbase root@slave1:/usr/
scp -r /usr/hbase root@slave2:/usr/
● 7、配置环境变量(三台机器)
vim /etc/profile
配置环境变量Hbase
export HBASE_HOME=/usr/hbase/hbase-
export PATH=$PATH:$HBASE_HOME/bin
生效环境变量:source /etc/profile
● 8、运行和测试,再master上执行(保证hadoop和zookeeper已开启)
bin/start-hbase.sh
jps
六、安装hive
6.1 在 slave2 上安装 MySQL server
● 1、解压安装包
现在已经为大家下载好了 MySQL 5.7.25 的安装包,存放在/root/software
目录下。首先进入此目录下,然后进行解压即可使用,命令如下:
cd /root/software/ # 进入目录
tar -xvf mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar # 解压安装包到当前目录下
将其解压到当前目录下,即/root/software
中,效果图如下所示:
● 2、 安装 MySQL 组件
使用rpm -ivh
命令依次安装以下组件:
(1)首先安装 mysql-community-common (服务器和客户端库的公共文件),使用命令:
rpm -ivh mysql-community-common-5.7.25-1.el7.x86_64.rpm
若是出现“100%”,则表示安装成功:
(2)其次安装 mysql-community-libs(MySQL 数据库客户端应用程序的共享库),使用命令:
rpm -ivh mysql-community-libs-5.7.25-1.el7.x86_64.rpm
若是出现“100%”,则表示安装成功:
(3)之后安装 mysql-community-libs-compat(MySQL 之前版本的共享兼容库),使用命令:
rpm -ivh mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm
若是出现“100%”,则表示安装成功:
(4)之后安装 mysql-community-client(MySQL 客户端应用程序和工具),使用命令:
rpm -ivh mysql-community-client-5.7.25-1.el7.x86_64.rpm
若是出现“100%”,则表示安装成功:
(5)最后安装 mysql-community-server(数据库服务器和相关工具),使用命令:
rpm -ivh mysql-community-server-5.7.25-1.el7.x86_64.rpm
若是出现“100%”,则表示安装成功:
● 3、登录 MySQL
(1)初始化 MySQL 的数据库
安装好 MySQL 后,我们需要初始化数据库,初始化和启动数据库时最好不要使用 root 用户,而是使用 mysql 用户启动。命令如下:
/usr/sbin/mysqld --initialize-insecure --user=mysql
对于 MySQL 5.7.6 以后的 5.7 系列版本,MySQL 也可以使用 mysqld --initialize 初始化数据库
该命令会在 /var/log/mysqld.log 文件中生成一个登录 MySQL 的随机密码,而 mysqld --initialize-insecure 命令不会生成随机密码,而是设置 MySQL 的密码为空。
(2)启动 MySQL 服务
使用如下命令开启 MySQL 服务,让其在后台运行(一定要加“&”,脚本才能放到后台运行):
/usr/sbin/mysqld --user=mysql &
执行后,系统会打印出命令执行的PID,如下图所示:
(3)登录 MySQL,使用 root 用户无密码登录 MySQL:mysql -uroot
(4)重置 MySQL 密码
在 5.7 版本后,我们可以使用alter user...identified by
命令把 root 用户的密码修改为 “123456”,具体命令如下所示:
mysql> alter user 'root'@'localhost' identified by '123456';
修改完成,使用exit
或者quit
命令退出 MySQL,重新登录验证密码是否修改成功,具体命令如下所示:
mysql -uroot -p123456
● 4、增加远程登录权限
当我们的帐号不允许从远程登录,只能在 localhost 连接时,这个时候只要在 MySQL 服务器上,更改 mysql 数据库里的 user 表里的 host 项,从 localhost 改成 % 即可实现用户远程登录。
(1)查看 user 表信息
使用如下命令查看 mysql 数据库下的 user 表信息:
mysql> use mysql; # 切换成 mysql 数据库
mysql> select user,host from user; # 查询用户信息
效果如下图所示:
可以看到在 user 表中已创建的 root 用户。host 字段表示登录的主机,其值可以用 IP 地址,也可用主机名。
(2)实现远程连接(授权法)
将 host 字段的值改为 % 就表示在任何客户端机器上能以 root 用户登录到 MySQL 服务器,建议在开发时设为 %。命令如下:
# 设置远程登录权限
mysql> update user set host='%' where host='localhost';
# 刷新配置信息
mysql> flush privileges;