MYSQL 8 从 MYSQL SHELL 开始

8e17bf75a42cddbc797a23843cc48d57.png

基于mysql 5.x  大家一般都是通过mysql 客户端来管理MYSQL ,但基于ORACLE 对于MYSQL 8 整体的规划,如果仅仅基于 mysql 客户端命令来操作MYSQL 8 则就有点,不与时俱进了,上个系列从performance_schema说起还差一篇关于MYSQL 索引的问题,然后就告一段落了,那么后面会围绕着 MYSQL SHELL ,以及MYSQL 锁,锁的探查,以及问题的解决产生一个新的系列     

基于MYSQL 8 后ORACLE 加大在MYSQL 各个方面的周边产品的研发,MYSQL SHELL 作为最新的控制和管理MYSQL 的一个方式的选择。

961c6902c71a8f73f47ddbe5d6f36efa.png

首先我们的安装我们的MYSQL SHELL ,mysql shell 一个有意思的地方是他与我们的MYSQL 的版本同时发布,如果有MYSQL 8.027 就有MYSQL shell 8.027 这个版本。

https://downloads.mysql.com/archives/shell/

271acb14f3dac5a372da4721dca21bb6.png

1        直接运行 yum -y install mysql-shell-8.0.27-1.el7.x86_64.rpm

28a91116082ac50f702b95a367da2f66.png

2        在安装完毕后,直接运行 mysqlsh 就进入到对应的环境中

f3c60472db619a4566a4389e2abe3967.png

3  常用的命令

在使用mysqlshell 的情况下我们一般使用的方式是在使用的命令前加斜杠 \

作为你要输入命令的开头。

\connect 的命令是在mysqlsh中连接你的mysql数据
\history 为展示你曾经执行的命令的回放
\js 切换到javascript  命令中

\py 切换到 python的状态中

\sql 切换到 SQL 语句的状态

mysqlshell 支持3中方式来管理你的MYSQL
\nowarnings \w  关闭警告
\q  为退出你的操作界面

\ reconnect 重新对数据库进行连接

\rehash    更新自动补齐名字的缓存

\status    打印连接信息

\use      连接数据库中的其他数据库

\warnings  打开告警

在进行操作之前我们可以创建一个用于操作的账号

create usertest@'%' identified by '1234.Com';

grant all on *.*to test@'%';

3517990205d1c57e4bfef27f221b2dd4.png

4  准备通过mysql shell 的方式连接MYSQL

mysqlsh --sql--uri=test@192.168.198.101 -P3306 -p1234.Com -D mysql –vertical

cfafb0805795f9fbf293cb86d7d373b3.png

5  通过SQL方式连入到MYSQLSHELL 后我们通过第一个简单的命令就可以获得我们的MYSQL上的一些统计信息,\status

2709a7fa1e1e83b2b64fbdd05709aadb.png

6  在MYSQL 中运行一些LINUX 系统的命令,这个功能对于时长需要在系统和数据库之间进行工作的人比较方便

\system  linux 命令

\system ls /data

1c6a559681e44c23e2cf6b3b6b069a9c.png

7连接的方式的不同,针对MYSQL SHELL 连接MYSQL的不同主要在于MYSQLSHELL 提供了更多的功能,如PYTHON JAVASCRIPT 等,这样的连接的方式是使用 X  Protocol 的方式来进行连接的方式,在连接前可以通过—mx 来标注你要用X协议的方式来连接,--mc则是使用老式传统的方式来对数据库进行连接。

7dcb04f7307a0b4f6b4358dbf10a1b62.png

8 查询数据的格式问题

Mysqlsh展示数据的方式主要有三种

1   针对json 数据的 josn pretty

2   针对传统数据的 table

3   针对传统数据的 vertical

mysqlsh--uri=test@192.168.198.101 -P3306 -p1234.Com -D world_x --sql -e "SELECTName,District, JSON_EXTRACT(info, '$.Places_of_interest[?].name') as SightsFROM world_x.city WHERE JSON_EXTRACT(info, '$.Places_of_interest') IS NOTNULL" --json=pretty

35e1e805d00a0096d744497ba48e6ca5.png

mysqlsh--sql  --uri=test@192.168.198.101 -P3306-p1234.Com -D world_x -e "SELECT Name as Sights FROMworld_x.city limit10" --table

072d91281bbe8693b0a073d57e8878d1.png

mysqlsh--sql  --uri=test@192.168.198.101 -P3306-p1234.Com -D world_x -e "SELECT Name as Sights FROMworld_x.city limit10" – vertical

7f32efb0b882569501e0d6f4a9dac967.png

9  通过PYTHON 来控制数据库

在MYSQLShell 的操作中可以通过python的代码来控制我们的数据库服务器系统,实际上我们通过X DEVAPI 来控制和掌握MYSQL 数据库系统。通过这个方法可以更有效的控制数据库中的关系数据类和方法,以及处理JSON文档对象。mysqlshell 提供了众多的操作数据库的函数来在py的环境下操作数据库,方便了开发者。

下面通过一些案例来进行操作

1  建立连接串,将连接的信息进行打包,

user_info = {

'host': '192.168.198.101',

'port': 33060,

'user': 'test',

'password': '1234.Com',

}

my_session = mysqlx.get_session(user_info)

通过get_session 的函数获取数据库的连接

2   获取当前数据库中的数据库列表

my_db = my_session.get_current_schema();

my_db = my_session.get_schemas()

5ce290ff71e899f3068dfc575c36645d.png

3   获得当前连接的情况,是打开,还是关闭,可以关闭连接

my_session.isopen()

mysql_sesion.close()

30ed790e8ece80edbca882b32bb86f19.png

4  获得当前的数据库,并执行SQL 

my_db = my_session.set_current_schema('test')

下面我们通过一个综合性的操作来结束mysql shell 的文字

eb242e41c06311304000f08df09e6cc8.png

#引入一个创建表的变量并赋值

CREATE_TBL = """

CREATE TABLE `test`.`info` (

`id` int auto_increment,

`sensor_name` char(30) NOT NULL,

`sensor_value` float DEFAULT NULL,

`sensor_event` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE

CURRENT_TIMESTAMP,

`sensor_units` char(15) DEFAULT NULL,

PRIMARY KEY `sensor_id` (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1

"""

#针对要查询的字段进行赋值

COLUMNS = ['sensor_name', 'sensor_value', 'sensor_units']

#复制连接字符串

user_info = {

'host': '192.168.198.101',

'port': 33060,

'user': 'test',

'password': '1234.Com',

}

#建立连接

my_session = mysqlx.get_session(user_info)

#  连接到test 数据库

my_db = my_session.set_current_schema('test')

#  执行SQL 创建表

sql_res = my_session.sql(CREATE_TBL).execute()

#获得操作表的变量

my_tbl = my_db.get_table('info')

# 插入数据

my_tbl.insert(COLUMNS).values('paint_vat_temp', 32.815, 'Celsius').execute()

my_tbl.insert(COLUMNS).values('tongue_height_variance', 1.52, 'mm').execute()

my_tbl.insert(COLUMNS).values('ambient_temperature', 24.5, 'Celsius').execute()

my_tbl.insert(COLUMNS).values('gross_weight', 1241.01, 'pounds').execute()

print("\nShowing results after inserting all rows.")

#获得整体表的数据

my_res = my_tbl.select(COLUMNS).execute()

#打印数据

for row  in  my_res.fetch_all():

    print row

0c6a911908d931763bf45115545eb735.png

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值