Esempio n. 1
0
    def test_change_user(self):
        connect_kwargs = self.connect_kwargs.copy()
        connect_kwargs['unix_socket'] = None
        connect_kwargs['ssl_disabled'] = False
        cmy1 = MySQL(buffered=True)
        cmy1.connect(**connect_kwargs)
        cmy2 = MySQL(buffered=True)
        cmy2.connect(**connect_kwargs)

        new_user = {
            'user': '******',
            'host': self.config['host'],
            'database': self.connect_kwargs['database'],
            'password': '******',
        }

        try:
            cmy1.query("DROP USER '{user}'@'{host}'".format(**new_user))
        except MySQLInterfaceError:
            # Probably not created
            pass

        stmt = ("CREATE USER '{user}'@'{host}' IDENTIFIED WITH "
                "caching_sha2_password").format(**new_user)
        cmy1.query(stmt)
        if tests.MYSQL_VERSION < (8, 0, 5):
            cmy1.query("SET old_passwords = 0")
            res = cmy1.query("SET PASSWORD FOR '{user}'@'{host}' = "
                             "PASSWORD('{password}')".format(**new_user))
        else:
            res = cmy1.query("ALTER USER '{user}'@'{host}' IDENTIFIED BY "
                             "'{password}'".format(**new_user))
        cmy1.query("GRANT ALL ON {database}.* "
                   "TO '{user}'@'{host}'".format(**new_user))

        cmy2.query("SHOW GRANTS FOR {user}@{host}".format(**new_user))
        cmy2.query("SELECT USER()")
        orig_user = cmy2.fetch_row()[0]
        cmy2.free_result()
        cmy2.change_user(user=new_user['user'],
                         password=new_user['password'],
                         database=new_user['database'])

        cmy2.query("SELECT USER()")
        current_user = cmy2.fetch_row()[0]
        self.assertNotEqual(orig_user, current_user)
        self.assertTrue(u"{user}@".format(
            **new_user) in current_user.decode('utf8'))
        cmy2.free_result()
    def test_change_user(self):
        connect_kwargs = self.connect_kwargs.copy()
        connect_kwargs['unix_socket'] = None
        connect_kwargs['ssl_disabled'] = False
        cmy1 = MySQL(buffered=True)
        cmy1.connect(**connect_kwargs)
        cmy2 = MySQL(buffered=True)
        cmy2.connect(**connect_kwargs)

        new_user = {
            'user': '******',
            'host': self.config['host'],
            'database': self.connect_kwargs['database'],
            'password': '******',
        }

        try:
            cmy1.query("DROP USER '{user}'@'{host}'".format(**new_user))
        except MySQLInterfaceError:
            # Probably not created
            pass

        stmt = ("CREATE USER '{user}'@'{host}' IDENTIFIED WITH "
                "caching_sha2_password").format(**new_user)
        cmy1.query(stmt)
        if tests.MYSQL_VERSION < (8, 0, 5):
            cmy1.query("SET old_passwords = 0")
            res = cmy1.query("SET PASSWORD FOR '{user}'@'{host}' = "
                             "PASSWORD('{password}')".format(**new_user))
        else:
            res = cmy1.query("ALTER USER '{user}'@'{host}' IDENTIFIED BY "
                             "'{password}'".format(**new_user))
        cmy1.query("GRANT ALL ON {database}.* "
                   "TO '{user}'@'{host}'".format(**new_user))

        cmy2.query("SHOW GRANTS FOR {user}@{host}".format(**new_user))
        cmy2.query("SELECT USER()")
        orig_user = cmy2.fetch_row()[0]
        cmy2.free_result()
        cmy2.change_user(user=new_user['user'], password=new_user['password'],
                         database=new_user['database'])

        cmy2.query("SELECT USER()")
        current_user = cmy2.fetch_row()[0]
        self.assertNotEqual(orig_user, current_user)
        self.assertTrue(
            u"{user}@".format(**new_user) in current_user.decode('utf8'))
        cmy2.free_result()