1.mysql工具介绍
这里的 “mysql” 不是指mysql服务,也不是指mysql数据库,而是指连接数据库的客户端工具。
2.连接选项
-u 指定用户名
-p 指定密码
-h 指定服务器IP或者域名
-P 指定连接端口
默认情况下,如果这些选项都不写,那木mysql将会使用 ‘用户名’@‘localhost’ 和空密码连接本机上的3306端口。空用户在mysql刚刚安装完毕后会自动生产,也就是使用一个mysql命令就可以连接到数据库的原因。
空用户:可以通配任何用户,即没有用户
空密码:旧版本可以空密码,新版本至少有一个临时密码
查看当前连接的用户
select current_user();
如果删除了空用户会去找my.cnf的[client]组内的用户名和密码,如果有就按照此用户名和密码进行登录;如果没有记录此选项,则系统就会使用 ‘root’@‘localhost’ 用户进行登录。(z1用户必须是数据库已经存在的用户)
创建z1用户
grant all privileges on *.* to ‘z1’@‘localhost’ identified by ‘123456’ with grant option;
vim /etc/my.cnf
[client]
user=z1
password=123456
重启生效
service mysqld restart
不出意外,可用z1用户进行无密码登录
如果客户端和服务器位于同一台机器上,通常不需要指定-h选项,否则要指定mysql服务所在的IP或主机名。如果不指定端口,默认将连接到3306端口。
3.客户端字符集选项
default-character-set=charset-name配置在my.cnf的[mysqld]组中,使用mysql工具连接时,会自动使用指定的客户端字符集选项。否则需要手动指定客户端字符集。客户端字符集与数据库字符集保持一致的目的就是保证标准输出不会出现乱码现象。(常见字符集有gbk、utf8等)
客户端连接时使用字符集选项:
mysql -uroot -p --default-character-set=utf8
mysql> show variables like 'chara%';
+--------------------------+----------------------------------------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /opt/mysql/mysql-8.0.19-linux-glibc2.12-x86_64/share/charsets/ |
+--------------------------+----------------------------------------------------------------+
8 rows in set (0.37 sec)
改变了character_set_client、character_set_connection、character_set_results指定的字符集,通常与character_set_database字符集保持一致。
3.执行选项
-e 选项执行sql语句并输出,多个sql语句可以用 ‘;’ 分开。
[root@ufo130 mysql]# mysql -uroot -pUfo_123456 mysql -e 'select user,host from user;'
mysql: [Warning] Using a password on the command line interface can be insecure.
+------------------+-----------+
| user | host |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
shell脚本方式
[root@ufo130 mysql]# mysql -uroot -pUfo_123456 mysql <<EOF
> select user,host from user;
> EOF
mysql: [Warning] Using a password on the command line interface can be insecure.
user host
mysql.infoschema localhost
mysql.session localhost
mysql.sys localhost
root localhost
4.格式化选项
-E 将输出按照字段竖屏输出显示
-s 去掉mysql输出中的线条框显示,字段用Tab分割
[root@ufo130 mysql]# mysql -uroot -pUfo_123456 mysql -e 'select user,host from user;' -E
mysql: [Warning] Using a password on the command line interface can be insecure.
*************************** 1. row ***************************
user: mysql.infoschema
host: localhost
*************************** 2. row ***************************
user: mysql.session
host: localhost
*************************** 3. row ***************************
user: mysql.sys
host: localhost
*************************** 4. row ***************************
user: root
host: localhost
[root@ufo130 mysql]# mysql -uroot -pUfo_123456 mysql -e 'select user,host from user;' -s
mysql: [Warning] Using a password on the command line interface can be insecure.
user host
mysql.infoschema localhost
mysql.session localhost
mysql.sys localhost
root localhost
5.错误处理选项
默认批量执行sql语句,报错后直接结束,报错前语句执行成功
-f 跳过报错的语句(提示不够详细),强制执行后边的sql
-v 显示报错的语句(提示报错详细)
–show-warnings (提示一些约束警告等信息)
mysql -uroot test < a.sql
mysql -uroot -f test < a.sql
mysql -uroot -v test < a.sql
mysql -uroot -v --show-warnings test < a.sql