设为首页 收藏本站
查看: 911|回复: 0

[经验分享] mysql基本语句

[复制链接]

尚未签到

发表于 2018-10-2 06:20:47 | 显示全部楼层 |阅读模式
设置更改root密码
  安装mysql后默认是没有密码的(mysql5.7以后会随机产生一个root密码),需要手动去为mysql的root管理员创建密码
  初次使用mysql时,是没有mysql命令的,这是因为PATH路径中没有添加mysql的bash路径,需要我们使用export PATH添加一下即可,这里我写入到了/etc/profile文件当中,这样每次开机启动时都会自动加载这个路径,生效这个路径下的命令
  这里把所有的路径指定了一下,其中包含重复的,不过这样不会影响到系统正常使用的
  

[root@aaa ~]# vim /etc/profile  

  
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/python3/bin:/root/bin:/usr/local/mysql/bin/
  

  修改默认没有密码的mysql,默认没有密码的mysql;不需要密码就能够登入其sql命令行中,可以在命令行中指定用户身份更新密码,也可以使用mysqladmin来更新密码,这种方式比较简单
  在命令行中直接写入密码来登入mysql,会有警告提示,警告用户尽量不要使用命令行输入密码的方式登录,因为其密码是明文显示的
  

[root@aaa ~]# mysqladmin -uroot -password 'pwd@123'  
[root@aaa ~]# mysql -uroot -ppwd@123
  
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>  
Server version: 5.6.12 Source distribution
  

  
Copyright (c) 2000, 2017, 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>
  

  修改my.cnf来更改mysql的密码,在my.cnf配置文件中添加skip-grand这项配置,然后重启mysql服务,在mysql5.7中,添加skip-grant则会导致mysql无法启动了,mysql5.7在初始化时会输出一个初始值的密码,需要在安装时留意这个密码,或者在root目录下找到.mysql_secret这个隐藏文件,其第二行就是默认密码,如果批量部署时可以使用特殊权限应用脚本来修改mysql的默认密码。
  

[root@aaa ~]# vim /etc/my.cnf  

  
[mysqld]
  
basedir = /usr/local/mysql/
  
datadir = /usr/local/mysql/data
  
port = 3306
  
character-set-server = utf8
  
explicit_defaults_for_timestamp = true
  
#skip-grant
  
[root@aaa ~]# /etc/init.d/mysqld restart
  
Shutting down MySQL.. SUCCESS!
  
Starting MySQL. SUCCESS!
  

  mysql5.7查看默认初始化的密码
  

[root@aaa ~]# cat .mysql_secret  
#Password set for user 'root@localhost' at 2018-08-10 18:01:37
  
aiivsz&#du_.
  

  mysql5.7中修改密码
  使用默认密码后无密码认证登入mysql,修改mysql表内容来修改root管理员密码
  

[root@aaa ~]# mysql -uroot -p  
Enter password:
  
Welcome to the MySQL monitor. Commands end with ; or \g.

  
Your MySQL connection>  
Server version: 5.7.22 Source distribution
  
Copyright (c) 2000, 2018, 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> SET PASSWORD FOR 'root'@localhost = PASSWORD('pwd@123');
  
Query OK, 0 rows affected, 1 warning (0.00 sec)
  

  链接mysql
  mysql密码创建好能正常使用后,我们会在一些远程工具或本地的某些环境中对mysql执行操作(如shell里),针对这些我们直接使用mysql命令来远程登录到这个数据库再执行操作
  mysql指定IP地址进行链接,登录时可以不指定密码,如果是在脚本这样的程序中操作,则需要-p密码  这样来直接登录到mysql中,-P 是指定端口号
  

[root@aaa ~]# mysql -uroot -p -h127.0.0.1 -P 3306  
Enter password:
  
Welcome to the MySQL monitor. Commands end with ; or \g.

  
Your MySQL connection>  
Server version: 5.7.22 Source distribution
  
Copyright (c) 2000, 2018, 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>
  

  使用sock文件的通信方式来登录mysql,这种和ip区别在于读取数据时不通过tcp/ip协议,也就是不会把数据发送到网卡然后去读取,可以为数据查询提高点读取速度,-S后指定sock文件所在目录,-S和路径后没有空格
  

[root@aaa ~]# mysql -uroot -p -S/usr/local/mysql/mysql.sock  
Enter password:
  
Welcome to the MySQL monitor. Commands end with ; or \g.

  
Your MySQL connection>  
Server version: 5.7.22 Source distribution
  
Copyright (c) 2000, 2018, 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>
  

  命令行中查询mysql中的数据,一般使用在脚本当中,mysql在登入后,执行语句会有回车的交互动作,依靠脚本语言实现起来比较麻烦,这里就使用了mysql  -e 来直接输出sql查询的结果,-e 后面的sql语句需要使用单引号引用起来
  

[root@aaa ~]# mysql -uroot -ppwd@123 -e 'show databases'  
mysql: [Warning] Using a password on the command line interface can be insecure.
  
+--------------------+
  
| Database           |
  
+--------------------+
  
| information_schema |
  
| mysql              |
  
| performance_schema |
  
| sys                |
  
+--------------------+
  

mysql常用语句
  查询mysql的所有库     show databases;
  

mysql> show databases;  
+--------------------+
  
| Database           |
  
+--------------------+
  
| information_schema |
  
| mysql              |
  
| performance_schema |
  
| sys                |
  
+--------------------+
  
4 rows in set (0.00 sec)
  

  进入或切换一个库,这里进入名为mysql的库     use mysql;
  并查询库里有哪些表     show tables;
  

mysql> use mysql;  
Database changed
  
mysql> show tables;
  
+---------------------------+
  
| Tables_in_mysql |
  
+---------------------------+
  
| columns_priv |
  
| db           |
  
| engine_cost  |
  
| event        |
  
| func         |
  
| general_log  |
  
-----------------省略部分
  

  查看表里的字段   desc  tb_name(表名);
  

mysql> desc user;  
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
  
| Field | Type | Null | Key | Default | Extra |
  
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
  
| Host                 | char(60)                 | NO |     PRI|        |                    |
  
| User                 | char(32)                 | NO |     PRI|        |                    |
  
| Select_priv          | enum('N','Y')            | NO |        |      N |                    |
  
| Insert_priv          | enum('N','Y')            | NO |        |      N |                    |
  
| Update_priv          | enum('N','Y')            | NO |        |      N |                    |
  ------------------省略部分字段
  

  查看建表的语句 show create table tb_name\G; 
  可以通过show create table 来查看创建表时使用的语句规则,加上\G使输出更加可视化,不然则是输出较多的符号,不易理解
  

mysql> show create table user\G;  
*************************** 1. row ***************************
  Table: user
  
Create Table: CREATE TABLE `user` (
  
`Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
  
-------省略部分-----------------------------------
  

  查看当前登录到mysql的用户  select  user();
  查看登录到mysql的有哪些,且是用什么方式登录的(本地或IP登录) ,这里是在本地登录mysql,远程登录mysql会显示出登录的ip或者解析的主机名,若不想让mysql解析远程ip,则需要在my.cnf中禁止解析ip的操作
  

mysql> select user();  
+----------------+
  
| user() |
  
+----------------+
  
| root@localhost |
  
+----------------+
  
1 row in set (0.00 sec)
  

  查看当前使用的数据库  select database();
  查看登入数据库执行某些进入库的操作后,查看自己现在操作处于哪个库下
  

mysql> select database();  
+------------+
  
| database() |
  
+------------+
  
| mysql      |
  
+------------+
  
1 row in set (0.00 sec)
  

  创建一个库 create database holle;
  创建库(database)指定创建的库所用的名称
  

mysql> create database holle;  
Query OK, 1 row affected (0.00 sec)
  

  创建表 create table tb1(id int(4),namechar (40))ENGINE=innodb DEFAULT CHARSET=utf8;
  这里创建数据表的内容是;创建一张id长度是4的、字符长度40的表,其指定了数据表使用的查询引擎和字符集(ENGINE和DEFAULT CHARSET)
  

mysql> create table tb1(`id` int(4),`name`char (40))ENGINE=innodb DEFAULT CHARSET=utf8;  
Query OK, 0 rows affected (0.02 sec)
  

  
mysql> show create table tb1\G;
  
*************************** 1. row ***************************
  Table: tb1
  
Create Table: CREATE TABLE `tb1` (
  `id` int(4) DEFAULT NULL,
  `name` char(40) DEFAULT NULL
  
) ENGINE=InnoDB DEFAULT CHARSET=utf8
  
1 row in set (0.00 sec)
  

  查看数据库版本  mysql> select version();
  

mysql> select version();  
+-----------+
  
| version() |
  
+-----------+
  
| 5.7.22    |
  
+-----------+
  
1 row in set (0.00 sec)
  

  查看数据库状态   show status;
  查看常用的数据状态
  

mysql> show status;  
+-----------------------------------------------+--------------------------------------------------+
  
| Variable_name                                 | Value                                            |
  
+-----------------------------------------------+--------------------------------------------------+
  
| Aborted_clients                               | 0                                                |
  
| Aborted_connects                              | 3                                                |
  
----------------------------省略部分
  

  查看mysql的设置参数  show variables\G;     
  

mysql> show variables\G;  
*************************** 462. row ***************************
  
Variable_name: sql_log_off
  Value: OFF
  
*************************** 463. row ***************************
  
Variable_name: sql_mode
  Value: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
  
*************************** 464. row ***************************
  
Variable_name: sql_notes
  Value: ON
  

  查看某个参数的统配   show variables like 'max_connect%';
  用于查找对应的配置参数,可以查找不太确认的配置参数名称,如所示:
  

mysql> show variables like 'max_connect%';  
+--------------------+-------+
  
| Variable_name | Value      |
  
+--------------------+-------+
  
| max_connect_errors   | 100 |
  
| max_connections      | 151 |
  
+--------------------+-------+
  
2 rows in set (0.00 sec)
  
mysql> show variables like 'slave_parallel%';
  
+------------------------+----------+
  
| Variable_name          | Value    |
  
+------------------------+----------+
  
| slave_parallel_type    | DATABASE |
  
| slave_parallel_workers | 0        |
  
+------------------------+----------+
  
2 rows in set (0.00 sec)
  

  修改mysql配置的参数   set global max_connect_errors=1000;
  将max_connect_errors的数值从100修改到1000,不过这个修改只是在内存当中生效,意味着如果发生关机开机重启的操作时,这些参数会变回配置文件中的默认配置,要想永久生效应对my.cnf的内容进行配置
  

mysql> show variables like 'max_connect%';  
+--------------------+-------+
  
| Variable_name | Value      |
  
+--------------------+-------+
  
| max_connect_errors   | 100 |
  
| max_connections      | 151 |
  
+--------------------+-------+
  
2 rows in set (0.00 sec)
  

  
mysql> set global max_connect_errors=1000;
  
Query OK, 0 rows affected (0.00 sec)
  

  
mysql> show variables like 'max_connect%';
  
+--------------------+-------+
  
| Variable_name      | Value |
  
+--------------------+-------+
  
| max_connect_errors |  1000 |
  
| max_connections    |   151 |
  
+--------------------+-------+
  
2 rows in set (0.00 sec)
  

  查看mysql处理列队  show processlist;
  查看mysql处理列队的全部信息 show full processlist;
  这两条语句主要查看mysql执行语句的处理情况,判断mysql的工作状态
  

mysql> show processlist;  
+----+------+-----------+---------+---------+-------+----------+------------------+

  
|>  
+----+------+-----------+---------+---------+-------+----------+------------------+
  
| 9  | root | localhost | holle   | Query   | 0     | starting | show processlist |
  
+----+------+-----------+---------+---------+-------+----------+------------------+
  
1 row in set (0.00 sec)
  

  
mysql> show full processlist;
  
+----+------+-----------+-------+---------+------+----------+-----------------------+

  
|>  
+----+------+-----------+-------+---------+------+----------+-----------------------+
  
| 9  | root | localhost | holle | Query   | 0    | starting | show full processlist |
  
+----+------+-----------+-------+---------+------+----------+-----------------------+
  
1 row in set (0.00 sec)



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-607276-1-1.html 上篇帖子: MySQL表操作 下篇帖子: centos升级MySQL数据库5.6.39
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表