1.3. MySQL 组成和常用工具
1.3.1. 客户端程序
· mysql: 交互式或非交互式的CLI工具
· mysqldump:备份工具,基于mysql协议向mysqld发起查询请求,并将查得的所有数据转换成insert等写操作语句保存文本文件中
· mysqladmin:基于mysql协议管理mysqld
· mysqlimport:数据导入工具
· MyISAM存储引擎的管理工具:
· myisamchk:检查MyISAM库
· myisampack:打包MyISAM表,只读
1.3.2. 服务器端程序
· mysqld_safe
· mysqld
· mysqld_multi 多实例 ,示例:mysqld_multi –example
1.3.3. 用户账号
mysql用户账号由两部分组成:
'USERNAME'@'HOST'
• 说明: HOST限制此用户可通过哪些远程主机连接mysql服务器
• 支持使用通配符
• % 匹配任意长度的任意字符,相当于shell中*, 示例: 172.16.0.0/255.255.0.0 或 172.16.%.%
• _ 匹配任意单个字符,相当于shell中?
root@localhost #root帐号在本地可以登录
root@10.0.0.10 #root帐号在10.0.0.10可以登录
sx@10.0.0.% #sx帐号在10.0.0.网段的任意主机可以登录(上面两种太严格了,这种相对较人性化)
1.3.4. mysql 客户端命令
1.3.4.1 mysql 运行命令类型
• 客户端命令:本地执行,每个命令都有完整形式和简写格式
mysql> \h, help
mysql> \u,use
mysql> \s,status
mysql> \!,system
• 服务端命令:通过mysql协议发往服务器执行并取回结果,命令末尾都必须使用命令结束符号,默认为分号
• 例如:mysql>SELECT VERSION();
1.3.4.2mysql 使用模式
• 交互模式
• 脚本模式
mysql -uUSERNAME -pPASSWORD < /path/somefile.sql
cat /path/somefile.sql | mysql -uUSERNAME -pPASSWORD
mysql>source /path/from/somefile.sql
1.3.4.3 mysql命令使用格式
mysql [OPTIONS] [database]
mysql客户端常用选项:
-A, --no-auto-rehash #禁止补全
-u, --user= #用户名,默认为root
-h, --host= #服务器主机,默认为localhost
-p, --passowrd= #用户密码,建议使用-p,默认为空密码
-P, --port= #服务器端口
-S, --socket= #指定连接socket文件路径
-D, --database= #指定默认数据库
-C, --compress #启用压缩
-e "SQL" #执行SQL命令
-V, --version #显示版本
-v --verbose #显示详细信息
--print-defaults #获取程序默认使用的配置
登录系统
#默认空密码登录
mysql -uroot -p
运行mysql命令
mysql>use mysql #切换数据库
mysql> select database(); #查看当前数据库
mysql>select user(); #查看当前用户
mysql>SELECT User,Host,Password FROM user;
mysql>system clear #清屏
mysql> ^DBye #ctrl+d 退出
1.3.4.4 mysqladmin命令
mysqladmin 命令格式
mysqladmin [OPTIONS] command command....
#查看mysql服务是否正常,如果正常提示mysqld is alive
mysqladmin -uroot -pcentos ping
#关闭mysql服务,但mysqladmin命令无法开启
mysqladmin -uroot -pcentos shutdown
#创建数据库testdb
mysqladmin -uroot -pcentos create testdb
#删除数据库testdb
mysqladmin -uroot -pcentos drop testdb
#修改root密码
mysqladmin -uroot -pcentos password 'magedu'
#日志滚动,生成新文件/var/lib/mysql/mariadb-bin.00000N
mysqladmin -uroot -pcentos flush-logs
1.3.4.5 mycli
MyCLI 是 MySQL,MariaDB 和 Percona 的命令行界面,具有自动完成和语法突出显示功能
安装
#CentOS8安装
[root@centos8 ~]#yum install python3-pip -y
[root@centos8 ~]#pip3 install mycli
#ubuntu安装
[root@ubuntu1804 ~]#apt -y install mycli
[root@ubuntu1804 ~]#mycli -u root -S /var/run/mysqld/mysqld.sock
1.3.5. 服务器端配置
1.3.5.1 服务器端配置文件
服务器端(mysqld):工作特性有多种配置方式
• 1、命令行选项
• 2、配置文件:类ini格式,集中式的配置,能够为mysql的各应用程序提供配置信息
服务器端配置文件
/etc/my.cnf #Global选项
/etc/mysql/my.cnf #Global选项
~/.my.cnf #User-specific 选项
#centos7中系统自带的mariadb,运行之后可以看到所在库的库名,这可以通过修改服务器配置文件使其显示
[root@Centos7 ~]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 6
Server version: 5.5.68-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> \s;
#修改centos8上的配置文件
[root@localhost /etc/my.cnf.d]#cat /etc/my.cnf | grep -v '#'
[client-server]
!includedir /etc/my.cnf.d #可以通过自配置文件来定义
[root@localhost /etc/my.cnf.d]#vim mysql.cnf #创建一个子配置文件
[mysql]
prompt=(\\u@\\h) [\\d]>\\_
#再次登录数据库查看
[root@localhost /etc/my.cnf.d]#mysql -uroot -p'hcie@SX123'
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 12
Server version: 8.0.26 Source distribution
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
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.
(root@localhost) [(none)]> #此时显示了帐号主机以及库名
配置文件格式
[mysqld]
[mysqld_safe]
[mysqld_multi]
[mysql]
[mysqldump]
[server]
[client]
格式
parameter = value
说明
_和- 相同
1,ON,TRUE意义相同 0,OFF,FALSE意义相同,无区分大小写
1.3.5.2 socket 连接说明
官方说明
https://dev.mysql.com/doc/mysql-port-reference/en/mysql-ports-reference-tables.html#mysql-client-server-ports
服务器监听的两种 socket 地址
• ip socket: 监听在tcp的3306端口,支持远程通信 ,侦听3306/tcp端口可以在绑定有一个或全部接口IP上
• unix sock: 监听在sock文件上,仅支持本机通信, 如:/var/lib/mysql/mysql.sock)
说明:host为localhost 时自动使用unix sock
注意:MySQL8.0增加了一个33060/tcp端口
1.3.5.3 关闭mysqld网络连接
只侦听本地客户端, 所有客户端和服务器的交互都通过一个socket文件实现,socket的配置存放在/var/lib/mysql/mysql.sock) 可在/etc/my.cnf修改
1.4. 通用二进制格式安装 MySQL
1.4.1. 实战案例:通用二进制格式安装 MySQL 5.6
1.4.1.1准备用户
groupadd -r -g 306 mysql #创建用户组mysql,为系统组,组id为306
useradd -r -g 306 -u 306 -d /data/mysql mysql #创建用户mysql,为系统用户,组id为306,用户id为306,指定/date/mysql为家目录
1.4.1.2 准备数据目录,建议使用逻辑卷
mkdir /data/mysql #创建数据目录
chown mysql:mysql /data/mysql/ #修改目录的属主属组为mysql
1.4.1.3准备二进制程序
下载二进制安装包
https://downloads.mysql.com/archives/community/
解压并创建软链接修改属主属组
tar xf mysql-VERSION-linux-x86_64.tar.gz -C /usr/local #解压到指定位置
#注意:解压后的路径不能乱指,因为这是默认值
cd /usr/local
ln -sv mysql-VERSION mysql
chown -R root:root /usr/local/mysql/
1.4.1.4. 准备配置文件
cd /usr/local/mysql
cp -b support-files/my-default.cnf /etc/my.cnf
vim /etc/my.cnf #mysql语句块中添加以下三个选项
[mysqld]
datadir = /data/mysql #指定数据库存放位置
innodb_file_per_table = on #在mariadb5.5以上版的是默认值,可不加
skip_name_resolve = on #禁止主机名解析,建议使用
1.4.1.5. 创建数据库文件
cd /usr/local/mysql/ #注意:一定要切换到当前目录才能运行脚本
./scripts/mysql_install_db --datadir=/data/mysql --user=mysql
#注意:运行脚本,注意这里需要使用相对路径
#脚本运行成功后数据库目录下生成如下文件
1.4.1.6. 准备服务脚本,并启动服务
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld #将mysql.server文件复制到系统服务目录下,创建服务名mysql。可以通过service调用
chkconfig --add mysqld #--add:增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。
service mysqld start #启动服务
#如果有对应的service 文件可以执行下面
cp /usr/local/mysql/support-files/mysql.server /usr/lib/systemd/system/ #将服务文件,复制到系统服务目录下,通过systemctl调用
systemctl daemon-reload #加载服务配置文件
systemctl enable --now mysql #启用mysql并使其开机启动
1.4.1.7. 检查服务是否启动
我这里没用mysql服务启动文件,所以只能直接通过service启动了
1.4.1.8. 添加环境变量
echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh
1.4.1.9.安装相关包
yum install -y libaio numactl-libs libncurses*
1.4.1.10. 登录测试
[root@localhost /usr/local/mysql]#mysql -uroot
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.51 MySQL Community Server (GPL)
Copyright (c) 2000, 2021, 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>
1.4.1.11安全初始化
/usr/local/mysql/bin/mysql_secure_installation
1.4.2. 实战案例:通用二进制格式安装 MySQL 5.7和Mysql8.0
1.4.2.1.安装相关包
yum install -y libaio numactl-libs libncurses*
1.4.2.2.用户和组
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
1.4.2.3.准备程序文件
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz
tar xf mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz -C /usr/local
cd /usr/local/
ln -s mysql-5.7.33-linux-glibc2.12-x86_64/ mysql
chown -R root.root /usr/local/mysql/
1.4.2.4.准备环境变量
echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh
1.4.2.5.准备配置文件
vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
skip_name_resolve=1
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sock
1.4.2.6.创建数据库目录
mkdir -pv /data/mysql
1.4.2.7.初始化数据库文件并提取root密码
1.4.2.7.1.方式1:初始化,指定用户,数据库目录,生成随机密码
mysqld --initialize --user=mysql --datadir=/data/mysql
#通过此命令可以查看随机密码
grep password /data/mysql/mysql.log
1.4.2.7.2.方式2:初始化,指定用户,数据库目录,生成空密码
mysqld --initialize-insecure --user=mysql --datadir=/data/mysql
1.4.2.8.准备服务脚本和启动服务
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
service mysqld start
1.4.2.9.修改密码
#修改前面生成的随机密码为指定密码
mysqladmin -uroot -p'6.-ioLc/>T2h' password sunxiang
#修改前面生成的空密码为指定密码
mysqladmin -uroot password sunxiang
#现在直接输入密码这些会有告警信息
[root@localhost /usr/local]#mysqladmin -uroot -p'6.-ioLc/>T2h' password sunxiang
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
#这个虽然告警但是不影响修改密码
1.4.2.10.登录测试
[root@localhost /usr/local]#mysql -uroot -p'sunxiang'
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 6
Server version: 5.7.33 MySQL Community Server (GPL)
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
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>
1.4.3.实战案例:一键安装mysql-5.6二进制包的脚本
1.4.3.1.离线安装mysql-5.6二进制包的脚本
#!/bin/bash
#
#########################################################################
#File Name: mysql_5.6_Offline.sh
#Author: sx
#QQ: 448803503
#Created Time: 2021-12-02 07:43:44
#Description: 稳定运行版 注意:因为需要修改父进程的环境变量所以通过. mysql_5.6_Offline.sh来执行脚本
#########################################################################
DIR=`pwd`
VERSION="MySQL-5.6"
NAME="mysql-5.6.51-linux-glibc2.12-x86_64.tar.gz"
LINK="mysql-5.6.51-linux-glibc2.12-x86_64"
FULL_NAME=${DIR}/${NAME}
DATA_DIR="/data/mysql"
echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh
yum install -y libaio numactl-libs libncurses*
if [ -e $FULL_NAME ];then
echo "安装包文件存在"
else
echo "安装包文件不存在"
echo $FULL_NAME
exit 3
fi
if [ -h /usr/local/mysql ];then
echo "mysql 已经安装"
exit 3
else
tar xvf $FULL_NAME -C /usr/local/
cd /usr/local
ln -sv $LINK mysql
chown -R root:root /usr/local/mysql/
if id mysql;then
echo "mysql 用户已经存在,跳过创建用户过程"
else
groupadd -r -g 306 mysql
useradd -r -g 306 -u 306 -d /data/mysql mysql
fi
if [ ! -d /data/mysql ];then
mkdir -pv /data/mysql && chown mysql:mysql /data/mysql/
else
echo "$DATA_DIR 已经存在"
fi
fi
if [ ! -d /etc/my.cnf ];then
cd /usr/local/mysql
cp -b /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
cat >/etc/my.cnf <<EOF
[mysqld]
datadir = /data/mysql
innodb_file_per_table = on
skip_name_resolve = on
EOF
./scripts/mysql_install_db --datadir=/data/mysql --user=mysql
else
echo "/etc/my.cnf 已存在"
fi
if [ ! -d /etc/init.d/mysqld ];then
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
service mysqld start
echo "恭喜你! 成功安装$LINK"
else
echo "mysql 已存在"
fi
1.4.3.2.在线安装mysql-5.6二进制包的脚本
#!/bin/bash
#
#########################################################################
#File Name: mysql_5.6_Online.sh
#Author: sx
#QQ: 448803503
#Created Time: 2021-12-02 07:43:44
#Description: 稳定运行版 注意:因为需要修改父进程的环境变量所以通过. mysql_5.6_Online.sh来执行脚本
#########################################################################
DIR=`pwd`
VERSION="MySQL-5.6"
NAME="mysql-5.6.51-linux-glibc2.12-x86_64.tar.gz"
LINK="mysql-5.6.51-linux-glibc2.12-x86_64"
FULL_NAME=${DIR}/${NAME}
DATA_DIR="/data/mysql"
echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh
yum install -y libaio numactl-libs libncurses* wget
wget http://mirrors.163.com/mysql/Downloads/$VERSION/$NAME
if [ -e $FULL_NAME ];then
echo "安装包文件存在"
else
echo "安装包文件不存在"
echo $FULL_NAME
exit 3
fi
if [ -h /usr/local/mysql ];then
echo "mysql 已经安装"
exit 3
else
tar xvf $FULL_NAME -C /usr/local/
cd /usr/local
ln -sv $LINK mysql
chown -R root:root /usr/local/mysql/
if id mysql;then
echo "mysql 用户已经存在,跳过创建用户过程"
else
groupadd -r -g 306 mysql
useradd -r -g 306 -u 306 -d /data/mysql mysql
fi
if [ ! -d /data/mysql ];then
mkdir -pv /data/mysql && chown mysql:mysql /data/mysql/
else
echo "$DATA_DIR 已经存在"
fi
fi
if [ ! -d /etc/my.cnf ];then
cd /usr/local/mysql
cp -b /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
cat >/etc/my.cnf <<EOF
[mysqld]
datadir = /data/mysql
innodb_file_per_table = on
skip_name_resolve = on
EOF
./scripts/mysql_install_db --datadir=/data/mysql --user=mysql
else
echo "/etc/my.cnf 已存在"
fi
if [ ! -d /etc/init.d/mysqld ];then
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
service mysqld start
echo "恭喜你! 成功安装$LINK"
else
echo "mysql 已存在"
fi
1.4.4.实战案例:一键安装mysql-5.7和8.0二进制包的脚本
1.4.4.1.在线安装mysql-5.7二进制包的脚本
#!/bin/bash
#
#########################################################################
#File Name: mysql_5.7_8.0_Online.sh
#Author: sx
#QQ: 448803503
#Created Time: 2021-12-02 07:43:44
#Description: 稳定运行版 注意:因为需要修改父进程的环境变量所以通过. mysql_5.7_8.0_Online.sh来执行脚本,生成随机的初始密码
#通过此命令可以查看随机密码:grep password /data/mysql/mysql.log
#########################################################################
DIR=`pwd`
VERSION="MySQL-5.7"
NAME="mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz"
LINK="mysql-5.7.34-linux-glibc2.12-x86_64"
FULL_NAME=${DIR}/${NAME}
DATA_DIR="/data/mysql"
echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh
yum install -y libaio numactl-libs libncurses* wget
wget http://mirrors.163.com/mysql/Downloads/$VERSION/$NAME
if [ -e $FULL_NAME ];then
echo "安装包文件存在"
else
echo "安装包文件不存在"
echo $FULL_NAME
exit 3
fi
if [ -h /usr/local/mysql ];then
echo "mysql 已经安装"
exit 3
else
tar xvf $FULL_NAME -C /usr/local/
cd /usr/local
ln -sv $LINK mysql
chown -R root:root /usr/local/mysql/
if id mysql;then
echo "mysql 用户已经存在,跳过创建用户过程"
else
groupadd -r -g 306 mysql
useradd -r -g 306 -u 306 -d /data/mysql mysql
fi
if [ ! -d /data/mysql ];then
mkdir -pv /data/mysql && chown mysql:mysql /data/mysql/
else
echo "$DATA_DIR 已经存在"
fi
fi
if [ ! -d /etc/my.cnf ];then
cd /usr/local/mysql
cp -b /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
cat >/etc/my.cnf <<EOF
[mysqld]
datadir=/data/mysql
skip_name_resolve=1
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sock
EOF
mysqld --initialize --user=mysql --datadir=/data/mysql
else
echo "/etc/my.cnf 已存在"
fi
if [ ! -d /etc/init.d/mysqld ];then
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
service mysqld start
echo "恭喜你! 成功安装$LINK"
else
echo "mysql 已存在"
fi
1.5. 源码编译安装 MySQL(很少使用简单了解即可)
建议:内存4G以上,CPU 核数越多越好
说明:本操作过程适用于以下版本
mysql-5.6.51.tar.gz
mariadb-10.2.18.tar.gz
1.5.1.安装相关依赖包
yum -y install gcc gcc-c++ cmake bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel perl-Data-Dumper
1.5.2.做准备用户和数据目录
useradd -r -s /sbin/nologin -d /data/mysql mysql
1.5.3.准备数据库目录
mkdir /data/mysql
chown mysql.mysql /data/mysql
1.5.4.源码编译安装
编译安装说明
利用cmake编译,而利用传统方法,cmake的重要特性之一是其独立于源码(out-of-source)的编译功能,即编译工作可以在另一个指定的目录中而非源码目录中进行,这可以保证源码目录不受任何一次编译的影响,因此在同一个源码树上可以进行多次不同的编译,如针对于不同平台编译
编译选项:
https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html
1.5.4.1.下载并解压缩源码包
tar xvf mysql-5.6.51.tar.gz -C /usr/local/src
1.5.4.2.源码编译安装 MySQL
cd mysql-5.6.51/
cmake . \
-DCMAKE_INSTALL_PREFIX=/apps/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc/ \
-DMYSQL_USER=mysql \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITHOUT_MROONGA_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci
make -j 12 && make install
提示:如果出错,执行rm -f CMakeCache.txt
1.5.5. 准备环境变量
echo 'PATH=/apps/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh
1.5.6.生成数据库文件
cd /apps/mysql/
scripts/mysql_install_db --datadir=/data/mysql/ --user=mysql #有点特殊自己注意下
1.5.7.准备配置文件
cp -b /apps/mysql/support-files/my-default.cnf /etc/my.cnf
#针对旧版本或mariadb-10.2.18.tar.gz
cp /apps/mysql/support-files/my-huge.cnf /etc/my.cnf
1.5.8.准备启动脚本,并启动服务
cp /apps/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
service mysqld start
1.5.9.安全初始化
mysql_secure_installation
1.6. 基于 dockcer 容器创建 MySQL(测试环境建议使用具体查看docker部分的文章)
[root@ubuntu1804 ~]#docker run --name mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.30
[root@ubuntu1804 ~]#mysql -uroot -p123456 -h127.0.0.1