zoukankan      html  css  js  c++  java
  • day-40mysql

    epoll

    #coding:utf-8
    #客户端
    #创建客户端socket对象
    import socket
    clientsocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    #服务端IP地址和端口号元组
    server_address = ('127.0.0.1',1688)
    #客户端连接指定的IP地址和端口号
    clientsocket.connect(server_address)
    
    while True:
        #输入数据
        data = raw_input('please input:')
        if data == "q":
            break
        if not data:
          continue
        #客户端发送数据
        clientsocket.send(data.encode("utf-8"))
        #客户端接收数据
        server_data = clientsocket.recv(1024)
        print ('客户端收到的数据:',server_data)
    #关闭客户端socket
    clientsocket.close()
    服务器
    # coding:utf-8
    import socket, select
    
    server = socket.socket()
    server.bind(("127.0.0.1", 1688))
    server.listen(5)
    
    msgs = []
    
    
    fd_socket = {server.fileno(): server}
    epoll = select.epoll()
    # 注册服务器的 写就绪
    epoll.register(server.fileno(), select.EPOLLIN)
    
    while True:
        for fd, event in epoll.poll():
            sock = fd_socket[fd]
            print(fd, event)
            # 返回的是文件描述符 需要获取对应socket
            if sock == server:  # 如果是服务器 就接受请求
                client, addr = server.accept()
                # 注册客户端写就绪
                epoll.register(client.fileno(), select.EPOLLIN)
                # 添加对应关系
                fd_socket[client.fileno()] = client
    
            # 读就绪
            elif event == select.EPOLLIN:
                data = sock.recv(2018)
                if not data:
                    # 注销事件
                    epoll.unregister(fd)
                    # 关闭socket
                    sock.close()
                    # 删除socket对应关系
                    del fd_socket[fd]
                    print(" somebody fuck out...")
                    continue
    
                print(data.decode("utf-8"))
                # 读完数据 需要把数据发回去所以接下来更改为写就绪=事件
                epoll.modify(fd, select.EPOLLOUT)
                #记录数据
                msgs.append((sock,data.upper()))
            elif event == select.EPOLLOUT:
                for item in msgs[:]:
                    if item[0] == sock:
                        sock.send(item[1])
                        msgs.remove(item)
                # 切换关注事件为写就绪
                epoll.modify(fd,select.EPOLLIN)

    数据库相关概念

      数据库本质就是一套CS结构的TCP程序,

      客户端连接到服务器 向服务器发送指令,来完成数据的操作

    数据库 与 文件系统的对应关系

    一个数据项 name = jerry           本质是文件中某一行的 一部分数据

    一条记录 jerry,18,man        本质是文件里的一行数据

    一张表                 本质是一个文件

    数据库                 文件夹

    DBMS DataBaseManagerSystem     数据库管理系统 数据库的服务器端程序

    数据库服务器             运行有DBMS的计算机

    安装方式

      1.下载解压包

      2.解压到某个目录下

      3.添加环境变量

        将bin所在的完整路径 copy 添加系统的path中

      4.作为服务器 应该自启动mysql服务器 需要制系统服务

        mysqld --install 运行输入services 查看是是否成功

        删除服务 sc delete mysql 如果需要重装的话...

        启动服务 net start mysql

        停止服务 net stop mysql

    连接服务器的指令

      本质是TCP程序,必须指定ip和端口 ,如果服务器就运行在本机上 可以省略ip 如果端口没改过 也可以省略端口

      完整的写法 :

        mysql -hip -P端口 -u用户名  -p密码  
        实例: mysql -uroot -p
       
     mysql 5.6 默认是没有密码的

    修改管理员密码

    1.如果知道原始密码 可以使用mysqladmin 这个工具

      mysqladmin -p旧密码  -u用户名 password 新密码
      实例: mysqladmin -uroot -p  password 123

    2.不知道原始密码的情况

      删除密码文件,会删除所有授权信息

      跳过授权表 我们可以在启动服务器时 指定让其忽略授权信息

      1.先关闭mysql服务器 直接在终端执行 mysqld --skip-grant-tables

      2.无密码登录root账户

      3.执行更新语句

      update mysql.user set password = password("123") where user="root" and host = "localhost";

     

     

     

      

  • 相关阅读:
    Linux 网络编程之ioctl函数
    驱动编写及编译例子
    字符串字面量与指针
    ubuntu 下安装nfs
    android 开源项目
    【转】中间件的历史来看移动App开发的未来
    android 关联源码
    【转】android 蓝牙
    【转】Android Google Map API使用的八个步骤
    【转】Android 国内集成使用谷歌地图
  • 原文地址:https://www.cnblogs.com/klw1/p/11005783.html
Copyright © 2011-2022 走看看