0%

Linux常用工具的安装与配置

在 CentOS 中安装 JDK、MySQL、Tomcat 等软件。


包管理工具

RPM(Red Hat Package Manager)是 Red Hat 开发的软件包管理工具,YUM(Yellowdog Updater Modified)是一个基于 RPM 开发的软件包管理器,能够从指定的服务器自动下载RPM包并且安装,可以处理依赖性关系。

rpm

rpm 是一种 Linux 软件包的名称,以.rmp结尾。

基本语法:rpm [options] [package ...]

  • options
  • -qa:查询全部
  • -e:移除包
  • --nodeps:不验证依赖关系
1
2
3
4
# 查看已经使用rpm安装的包
rpm -qa | grep <keyword>
# 移除包
rpm -e --nodeps <package_name>

yum

rpm 包的安缺点是文件的关联性太大,装一个软件要安装很多其他的依赖包,使用 yum 可以解决这个关联性的问题。

yum 基本语法:yum [options] COMMAND [package ...]

  • options
  • -h:帮助
  • -y:安装提示全部选择yes,自动化安装
  • -q:安静模式,不显示安装过程
  • -C:完全从缓存中运行,不下载或者更新任何头文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 安装软件
yum install <package_name>
# 删除软件
yum remove <package_name>
# 列出所有软件清单
yum list
# 查找软件
yum search <keyword>
# 查看可更新软件
yum check-update
# 更新软件
yum update <package_name>
# 更新全部软件
yum update
# 清除缓存
yum clean packages
yum clean headers
yum clean oldheaders
yum clean all

切换 yum 源为阿里云:

1
2
3
4
5
6
7
8
# 备份源文件
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 下载阿里云文件
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
# 清理缓存
yum clean all
# 重新生成缓存
yum makecache

传输工具

wget

wget 是一个专注于下载的工具,支持断点续传,轻便有效。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查看帮助
wget -h
# 下载文件,保存为原始文件名(index.html)
wget https://sannaha.moe
# 下载文件,保存原始文件名(index.html)及下载过程信息(process.txt)
wget -o process.txt https://sannaha.moe
# 另存为,保存为指定文件名(sannaha.html)
wget -O sannaha.html https://sannaha.moe
# 断点续传
wget -c https://cdn1.evernote.com/win6/public/Evernote_6.18.4.8489.exe
# 安静模式(不打印下载过程)
wget -q https://cdn1.evernote.com/win6/public/Evernote_6.18.4.8489.exe
# 后台下载(输出下载日志wget-log)
wget -b https://cdn1.evernote.com/win6/public/Evernote_6.18.4.8489.exe

cURL

cURL 是一个 http 命令行工具,它支持文件的上传和下载,强大、复杂。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 输出内容至控制台
curl https://sannaha.moe
# 保存下载内容
curl -o sannaha.html https://sannaha.moe
# 保存网页中的文件
curl -O https://sannaha.moe/Aplayer.min.css
# 使用代理
curl -O -fsSL -x 127.0.0.1:1080 https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh
# 测试网页返回值
curl -o /dev/null -s -w %{http_code} sannaha.moe
# 批量下载(多文件仅尾部编号不同)
curl -O https://www.example.com/banner[1-5].jpg
# 分块下载,每块约为100M(单位Byte)
curl -r 0-99999999 -o Evernote_part1.tmp https://cdn1.evernote.com/win6/public/Evernote_6.18.4.8489.exe
curl -r 100000000- -o Evernote_part2.tmp https://cdn1.evernote.com/win6/public/Evernote_6.18.4.8489.exe
cat Evernote_part* > Evernote_6.18.4.8489.exe

Zmodem

Zmodem 文件传输协议采用了串流式(streaming)传输方式,传输速度较快,而且还具有自动改变区段大小和断点续传、快速错误侦测等功能。这是目前最流行的文件传输协议。

sz:send Zmodem,用Zmodem文件传输协议从Linux服务器发送文件到本地
rz:receive Zmodem,用Zmodem文件传输协议从本地发送文件到Linux服务器

1
2
3
4
5
6
7
# 安装
yum -y install lrzsz

# 从Linux上接收文件
sz filename
# 传输文件到Linux
rz

ftp

使用文件传输协议(File Transfer Protocol)在计算机之间传输文件。

搭建服务器

FTP 服务器的搭建可以参考 *通过仓库拉取ftp镜像 **linux FTP 服务器安装配置及命令使用 *

安装客户端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ yum -y install ftp

# 进入 ftp 命令行,查看所有命令
$ ftp
ftp> help
! debug mdir sendport site
$ dir mget put size
account disconnect mkdir pwd status
append exit mls quit struct
ascii form mode quote system
bell get modtime recv sunique
binary glob mput reget tenex
bye hash newer rstatus tick
case help nmap rhelp trace
cd idle nlist rename type
cdup image ntrans reset user
chmod lcd open restart umask
close ls prompt rmdir verbose
cr macdef passive runique ?
delete mdelete proxy send

连接服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# ftp [option] [host]
# 进入 ftp 命令行
-v:强制FTP显示来自远程服务器的所有响应,以及数据传输统计信息的报告。
-d:启用调试,显示FTP客户端和FTP服务器之间传递的所有命令。
-i:在多个文件传输期间禁用交互式提示。
-n:在初始连接时禁止自动登录。
-g:禁止使用通配符。Glob 允许使用星号 (*) 和问号 (?) 作为本地文件名和路径名中的通配符。

# 连接指定 ftp 服务器,根据提示输入账号密码登录
$ ftp 192.168.153.121

# ftp -n [host]
# -n:限制FTP在初始连接时尝试自动登录
# 连接指定 ftp 服务器,不显示登录提示
# 用 user [username] [password] 进行登录
$ ftp -n 192.168.153.121
ftp> user ftpadmin ftpadmin

# ftp -ivn [host]
# -i:在多个文件传输期间禁用交互式提示
# -n:限制FTP在初始连接时尝试自动登录
# 连接指定 ftp 服务器,不显示登录提示,传输多个文件无需确认,适合在脚本中使用
$ ftp -in 192.168.153.121
ftp> user ftpadmin ftpadmin

# open <host> [<port>]
# 连接指定 ftp 服务器,根据提示输入账号密码登录
$ ftp
ftp> open 192.168.153.121

# close/disconnect 二者相同
# 使远程服务器终止 FTP 会话
ftp> close
221 Goodbye.

# bye/quit/exit
# 终止 FTP 会话并退出 ftp 命令行
ftp> bye
221 Goodbye.

操作服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# pwd/ls/cd/mkdir
ftp> pwd
257 "/"
ftp> ls
drwx------ 2 ftp ftp 24 Jul 29 07:42 dir
ftp> mkdir mydir
ftp> cd mydir

# rename [from] [to]
# 重命名、移动文件
ftp> rename result.txt result.txt.tmp
ftp> rename result.txt.tmp subdir/result.txt.tmp

# 想复制文件?不支持

# delete remote-file
# 删除服务器文件
ftp> delete result.txt

# mdelete [remote-files]
# 删除服务器文件,支持通配符
ftp> mdelete *.txt

# dir [remote-directory] [local-file]
# 输出远程目录内容列表,支持通配符,输出结果可以放在本地文件
# 如果未指定远程目录,则使用当前工作目录;如果未指定本地文件或本地文件是 - ,则输出到终端
ftp> dir
-rw------- 1 ftp ftp 6 Jul 29 06:51 result.txt
-rw------- 1 ftp ftp 4 Jul 29 03:45 result2.txt
drwx------ 2 ftp ftp 6 Jul 29 07:36 subdir
ftp> dir *.txt
-rw------- 1 ftp ftp 6 Jul 29 06:51 result.txt
-rw------- 1 ftp ftp 4 Jul 29 03:45 result2.txt
ftp> dir . -
-rw------- 1 ftp ftp 6 Jul 29 06:51 result.txt
-rw------- 1 ftp ftp 4 Jul 29 03:45 result2.txt
drwx------ 2 ftp ftp 6 Jul 29 07:36 subdir
ftp> dir . mydirlist.txt

# nlist [remote-directory] [local-file]
# 打印远程目录中的文件列表。如果未指定远程目录,则使用当前工作目录。
# 如果没有本地文件,或者如果本地文件是 - 则,则输出将发送到终端。
ftp> nlist mydir mydirnlist.txt
ftp> nlist mydir -
mydir/result.txt
mydir/result2.txt
mydir/subdir

# mls remote-files local-file
# 等同于 nlist


操作本地

1
2
3
4
5
6
7
8
9
10
11
# ! [command [args]]
# 在本地计算机上调用一个交互式shell。如果有参数,则第一个将被直接执行的命令,其中其余的参数作为其参数。
ftp> !pwd
/opt/bigdata
ftp> !ls
hivedata script testdata work

# lcd [directory]
# 更改本地目录
ftp> lcd /opt/bigdata/hivedata

上传文件

1
2
3
4
5
6
7
# 上传单个文件
# put [local/path/]lfile [remote/path/rfile]
ftp> put result.txt
ftp> put result.txt dir/res.txt

# 批量上传文件,支持通配符,不支持绝对路径
ftp> mput filename*

下载文件

1
2
3
4
5
6
7
8
9
10
11
12
13
# get remote-file [local-file]
# 从远程服务器下载文件到本地,如果未指定本地文件名,则与远程服务器上的名称相同
ftp> get rfile
ftp> get rfile lfile

# mget remote-files
# 从服务器下载文件到本地,支持通配符
ftp> mget *.txt
mget result.txt? y
6 bytes received in 0.000301 secs (19.93 Kbytes/sec)
mget result2.txt? y
4 bytes received in 0.000582 secs (6.87 Kbytes/sec)

传输模式

1
2
3
4
5
6
7
8
9
10
11
12
# 查看当前传输模式
ftp> type
Using binary mode to transfer files.

# 切换为字符模式
ftp> asc
200 Switching to ASCII mode.

# 切换为二进制模式
ftp> bin
200 Switching to Binary mode.

lftp

lftp 是一个功能强大的文件传输工具,支持访问文件的协议包括:ftp、ftps、http、https、hftp、fish。lftp 提供了一个类似 shell 的用户界面:有命令补全、历史记录,也可以直接使用脚本操作,允许多个后台任务执行,还有书签、排队、镜像、断点续传、多进程下载等功能。

这里会介绍一些 lftp 中常用的命令,lftp 在 Shell 脚本中的应用见 *Linux 脚本 *,更多 lftp 命令见手册 *the manual page - LFTP *

安装

1
2
3
4
5
# 安装
$ yum -y install lftp

$ lftp --version
LFTP | Version 4.4.8 | Copyright (c) 1996-2013 Alexander V. Lukyanov

语法

1
2
3
4
# 语法
lftp [-d] [-e cmd] [-p port] [-u user[,pass]] [site]
lftp -f script_file # 执行脚本后退出
lftp -c commands # 在选择后执行命令

连接服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
# 连接 ftp 服务器,连接后使用 user <username> <password> 命令登录
$ lftp ftp://192.168.153.121
lftp 192.168.153.121:~> user ftpadmin ftpadmin
# 连接 ftp 服务器,在 URL 中指定身份验证信息
$ lftp ftp://ftpadmin:[email protected]
# 连接 ftp 服务器,使用 -p 指定端口,-u 指定用户和密码
$ lftp -p 21 -u ftpadmin,ftpadmin ftp://192.168.153.121
# 使用 -e 执行后面的命令
$ lftp -p 21 -u ftpadmin,ftpadmin ftp://192.168.153.121 -e "cd data; put top.sql -o top.sql.tmp;mv top.sql.tmp top.sql;exit;" >> /dev/null

# 退出
# exit [bg] [top] [kill] [code]
lftp [email protected]:~> exit

操作服务器

lftp 中 pwd / ls / cd / mv / rm / mkdir / cat 等命令的功能与 Shell 一致,用来查看与操作 FTP 服务器上的文件和目录:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# pwd [-p]
# 显示当前的远程 URL 地址
# 使用 -p 会在 URL 中显示密码(使用带密码的 lftp 命令登录后默认会在 URL 中显示密码信息)
lftp [email protected]:~> pwd
ftp://[email protected]:21
lftp [email protected]:~> pwd -p
ftp://ftpadmin:[email protected]:21

# ls params
lftp [email protected]:~> ls
drwx------ 2 ftp ftp 71 Jul 21 08:59 data
-rw------- 1 ftp ftp 0 Jul 21 08:58 result.txt

# cls [OPTS] files...
# cls 是在检索指定文件或目录的信息后自行格式化,可以设置格式,ls 是请求服务器格式化文件列表
lftp [email protected]:/> cls
data/

# cd rdir
lftp [email protected]:/> cd data/

操作本地

以下命令与 Shell 相仿,用来查看本地文件和目录以及改变本地工作目录:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# lpwd 
# 显示本地机器当前工作目录
lftp [email protected]:~> lpwd
/opt/bigdata/hivedata

# lcd ldir
# 改变本地目录
lftp [email protected]:~> lcd /opt/bigdata/
lcd 成功, 本地目录=/opt/bigdata

# ! shell command
# 在本地执行 shell 命令
# 使用 !ls 显示本地目录下的内容
lftp [email protected]:~> !ls
course.csv score.csv student.csv teacher.csv
# ! 也可以与 cd 等命令组合,但不会改变 lftp 的本地工作目录
lftp [email protected]:/data> !pwd
/root
lftp [email protected]:/data> lpwd
/root
lftp [email protected]:/data> ! cd /opt/
lftp [email protected]:/data> lpwd
/root
lftp [email protected]:/data> lcd /opt
lcd 成功, 本地目录=/opt
lftp [email protected]:/data> lpwd
/opt

下载文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 从服务器下载文件到本地,使用 Ctrl+C 可以中断下载
# get [-E] [-a] [-c] [-e] [-O base] rfile [-o lfile] ...
# -c:断点续传
# -E:传输成功后删除源文件
# -e:传输前删除目标文件
# -a:使用ascii模式,默认为二进制
# -O <base>:指定放置文件的目录或URL
# -o <lfile>:保存文件名
> get hadoopserver.tar -o hadoopserver.tar.tmp
中断

# 从服务器下载文件到本地,支持通配符
# mget [-c] [-d] [-a] [-E] [-O base] files
# -c:断点续传
# -d:创建与文件名相同的目录并将文件放入其中
# -E:传输成功后删除源文件
# -a:使用ascii模式,默认为二进制
# -O <base>:指定放置文件的目录或URL
> mget *.csv
522 bytes transferred
Total 2 files transferred

# 建立多个连接获取指定的文件
# 可以加快传输速度,但会给服务器和网络带来压力,影响其他用户使用
# pget [OPTS] rfile [-o lfile]
# -c:断点续传
# -n maxconn:设置最大连接数
> pget -c -n 10 hadoopserver.tar -o hadoopserver.tar.tmp
814088563 bytes transferred in 18 seconds (42.84M/s)

# 下载时文件已存在
# 会提示 file already exists and xfer:clobber is unset
# 设置允许替换本地文件
> set xfer:clobber on

上传文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 文件上传到服务器
# put [-E] [-a] [-c] [-O base] lfile [-o rfile]
# -c:断点续传
# -E:传输成功后删除源文件
# -e:传输前删除目标文件
# -a:使用ascii模式,默认为二进制
# -O <base>:指定放置文件的目录或URL
# -o <lfile>:保存文件名
> put result.txt -o result.txt.tmp

# 文件上传到服务器,支持通配符
# mput [-c] [-d] [-a] [-E] [-O base] files
# -c:断点续传
# -E:传输成功后删除源文件
# -e:传输前删除目标文件
# -a:使用ascii模式,默认为二进制
# -O <base>:指定放置文件的目录或URL
# -o <lfile>:保存文件名
> mput *.csv
654 bytes transferred
Total 4 files transferred

移动和删除

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 重命名/移动文件
# mv file1 file2
lftp [email protected]:/data> mv result.txt result.txt.tmp
rename successful

# 移动多个文件到指定目录,该命令为 4.8.0 版本新特性
# mmv [-O directory] file(s) directory

# 删除文件
# rm [-r] [-f] files
# -r:递归删除
# -f:不显示错误信息
> rm dir
rm: Access failed: 550 Delete operation failed. (dir)
> rm -f dir
> rm -r dir
rm 成功, 删除 `dir'

# 删除文件,支持通配符
# mrm file(s)
> mrm file*.txt
rm ok, 3 files removed

镜像目录

1
2
3
4
5
6
7
8
# 使用 mirror 将指定的源目录镜像到目标目录
# 默认将远程目录下载到本地目录
# 使用 -R 将本地的上传到远程目录
# mirror [OPTS] [source [target]]
> mirror -R hivedata
Total: 1 directory, 6 files, 0 symlinks
New: 6 files, 0 symlinks
654 bytes transferred

网络工具

netstat

1
2
3
4
5
6
7
8
9
10
11
# 安装
$ yum install -y net-tools

# 查看服务器所有被占用的端口
$ netstat -ant

# 验证某个端口是否被占用
$ netstat -tunlp|grep 10000

# 查看所有监听端口号
$ netstat -lntp

Vim

安装:

1
2
3
4
5
6
7
8
9
10
11
# Vim编辑器需要安装三个包
vim-minimal-7.4.160-5.el7.x86_64
vim-common-7.4.160-5.el7.x86_64
vim-enhanced-7.4.160-5.el7.x86_64

# 查看本机已经存在的包
$ rpm -qa|grep vim
vim-minimal-7.4.629-8.el7_9.x86_64

# 安装缺少的包,如vim-common和vim-enhanced
$ yum -y install vim-common vim-enhanced

配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 配置别名
$ vim /root/.bashrc
alias vi='vim'

# 编辑样式,对所有用户生效
$ vim /etc/vimrc
# 编辑样式,对当前用户生效
$ vim ~/.vimrc

# 修改样式
set number "显示行号"
set showmatch "高亮匹配括号"
set ai "自动缩进"

JDK

  1. 卸载 openjdk
1
2
3
4
5
6
7
8
9
# 查看是否安装了openjdk
# rpm -qa | grep java
tzdata-java-2013g-1.el6.noarch
java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64
java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64
# 卸载openjdk
rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.i686
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.i686
rpm -e --nodeps tzdata-java-2013g-1.el6.noarch
  1. 安装JDK8

现在从 Oracle 官方下载 JDK8 需要登录账号,可以在 Windows 上登录并获取下载链接(有实效性),再在 Linux 上使用 wget 下载。

1
2
3
4
5
6
# 创建文件夹
mkdir -p /usr/java && cd /usr/java
# 下载JDK8(自行获取链接)
wget -O jdk-8u211-linux-x64.tar.gz https://download.oracle.com/otn/java/jdk/8u211-b12/478a62b7d4e34b78b671c754eaaf38ab/jdk-8u211-linux-x64.tar.gz?AuthParam=1559299061_1ea315f9742e1b52d8bcd7a938fee6f0
# 解压
tar –zxvf jdk-8u211-linux-x64.tar.gz
  1. 配置环境变量
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 配置环境变量
# vim /etc/profile
# 添加如下内容
export JAVA_HOME=/usr/java/jdk1.8.0_211
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME PATH CLASSPATH
# 重新编译环境变量
# source /etc/profile
# 测试
# java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)

Tomcat

安装:

1
2
3
4
# 上传apache-tomcat-7.0.52.tar.gz
$ cd /export/software
# 解压
$ tar -zxvf apache-tomcat-7.0.52.tar.gz -C /export/servers/

CentOS 7 默认使用的是 firewall 作为防火墙,换回 iptables 需要重新安装:

1
2
3
4
5
6
# 停止firewall
$ systemctl stop firewalld.service
# 禁止firewall开机启动
$ systemctl disable firewalld.service
# 安装iptables
$ yum -y install iptables-services

修改防火墙,开启端口:

1
2
3
4
5
6
7
# 修改防火墙,开启端口
$ vim /etc/sysconfig/iptables
# 添加如下内容
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
# 重启防火墙
$ service iptables restart

启动

apache-tomcat-7.0.52/
1
2
# 启动Tomcat并查看启动信息
bin/startup.sh && tail -100f logs/catalina.out

MySQL

卸载预装的 MySQL

1
2
3
4
5
6
7
8
9
10
# 查看是否安装了MySQL
# rpm -qa | grep mysql
mysql-libs-5.1.73-8.el6_8.x86_64
mysql-5.1.73-8.el6_8.x86_64
mysql-server-5.1.73-8.el6_8.x86_64
mysql-devel-5.1.73-8.el6_8.x86_64

# 删除MySQL。上面检索出了几个,就删除几个
# rpm -e mysql-libs-5.1.73-8.el6_8.x86_64 --nodeps
...

安装 MySQL

  1. 使用 yum 在线安装 MySQL:
1
$ yum -y install mysql mysql-server mysql-devel
  1. 启动 mysqld 服务:
1
$ service mysqld start
  1. 运行 mysql 安装自带脚本进行配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# /usr/bin/mysql_secure_installation
...
# 输入root用户的密码(初次使用直接回车)
Enter current password for root (enter for none):

# 设置root用户的密码,如:123456
Set root password? [Y/n] y
New password:123456

# 移除匿名用户
Remove anonymous users? [Y/n] y

# 不禁止(允许)远程访问
Disallow root login remotely? [Y/n] n

# 移除测试数据库
Remove test database and access to it? [Y/n] y

# 重新加载权限表
Reload privilege tables now? [Y/n] y
  1. 进入 MySQL 客户端,进行授权:
1
2
3
4
5
$ mysql -uroot -p
# 授权mysql允许远程连接
mysql> grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
# 刷新权限表
mysql> FLUSH PRIVILEGES;
  1. 设置 MySQL 开机启动:
1
2
$ chkconfig --add mysqld
$ chkconfig mysqld on

重设密码

  1. 停止运行 mysqld 服务:
1
service mysqld stop
  1. 跳过访问授权表:
1
mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
  1. 登录 MySQL:
1
mysql -u root mysql
  1. 修改密码
1
2
3
4
5
6
7
8
9
-- mysql5.7 版本以下,newpassword 填入新的密码
mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root' and host='127.0.0.1' or host='localhost';

-- mysql5.7 版本,newpassword 填入新的密码
mysql> UPDATE mysql.user SET authentication_string=PASSWORD('newpassword') where USER='root' and host='127.0.0.1' or host='localhost';

-- 刷新权限表
mysql> FLUSH PRIVILEGES;
mysql> quit
  1. 重启 mysqld 服务并使用新密码登录:
1
2
3
4
5
6
# 重启mysqld服务
$ service mysqld restart

# 使用新密码登录
$ mysql -uroot -p
Enter password: <newpassword>