1. 18 Sep, 2023 1 commit
    • Daniel Black's avatar
      MDEV-21194: mariadb-install-db doesn't properly grant proxy privileges to all created user accounts · 8bbe3a3c
      Daniel Black authored
      mariadb-install-db --auth-root-authentication-method=normal created 4
      root accounts by default, but only two of these had PROXY privilege
      granted.
      
      mariadb-install-db (default option
      --auth-root-authentication-method=socket) as non-root user also didn't
      grant PROXY priv to the created nonroot@localhost user.
      
      To fix this, in mysql_system_tables_data.sql, we re-use tmp_user_nopasswd
      as this contains the list of all root users.
      
      REPLACE INTO tmp_proxies_priv SELECT @current_hostname, IFNULL(@auth_root_socket, 'root')
      creates the $user@$current_host but will not error if @auth_root_socket
      is null. Note @current_hostname lines are filtered out with
      --cross-bootstrap in mariadb-install-db so it was needed to include this
      expression for consistency.
      
      Like the existing mysql_system_tables.sql is used to create teh
      $user@localhost proxies_priv.
      
      Test cases roles.acl_statistics, perfschema,privilege_table_io depends on the number of proxy users.
      
      After:
      
      --auth-root-authentication-method=normal:
      
      MariaDB [mysql]> select * from global_priv;
      +-----------+-------------+--------------------------------------------------------------------------------------------------------------------------+
      | Host      | User        | Priv                                                                                                                     |
      +-----------+-------------+--------------------------------------------------------------------------------------------------------------------------+
      | localhost | mariadb.sys | {"access":0,"plugin":"mysql_native_password","authentication_string":"","account_locked":true,"password_last_changed":0} |
      | localhost | root        | {"access":18446744073709551615}                                                                                          |
      | bark      | root        | {"access":18446744073709551615}                                                                                          |
      | 127.0.0.1 | root        | {"access":18446744073709551615}                                                                                          |
      | ::1       | root        | {"access":18446744073709551615}                                                                                          |
      | localhost |             | {}                                                                                                                       |
      | bark      |             | {}                                                                                                                       |
      +-----------+-------------+--------------------------------------------------------------------------------------------------------------------------+
      7 rows in set (0.001 sec)
      
      MariaDB [mysql]> select * from proxies_priv;
      +-----------+------+--------------+--------------+------------+---------+---------------------+
      | Host      | User | Proxied_host | Proxied_user | With_grant | Grantor | Timestamp           |
      +-----------+------+--------------+--------------+------------+---------+---------------------+
      | localhost | root |              |              |          1 |         | 2023-07-10 12:12:24 |
      | 127.0.0.1 | root |              |              |          1 |         | 2023-07-10 12:12:24 |
      | ::1       | root |              |              |          1 |         | 2023-07-10 12:12:24 |
      | bark      | root |              |              |          1 |         | 2023-07-10 12:12:24 |
      +-----------+------+--------------+--------------+------------+---------+---------------------+
      
      --auth-root-authentication-method=socket:
      
      MariaDB [mysql]> select * from proxies_priv;
      +-----------+------+--------------+--------------+------------+---------+---------------------+
      | Host      | User | Proxied_host | Proxied_user | With_grant | Grantor | Timestamp           |
      +-----------+------+--------------+--------------+------------+---------+---------------------+
      | localhost | root |              |              |          1 |         | 2023-07-10 12:11:55 |
      | localhost | dan  |              |              |          1 |         | 2023-07-10 12:11:55 |
      | bark      | dan  |              |              |          1 |         | 2023-07-10 12:11:55 |
      +-----------+------+--------------+--------------+------------+---------+---------------------+
      3 rows in set (0.017 sec)
      
      MariaDB [mysql]> select * from global_priv;
      +-----------+-------------+--------------------------------------------------------------------------------------------------------------------------------------------+
      | Host      | User        | Priv                                                                                                                                       |
      +-----------+-------------+--------------------------------------------------------------------------------------------------------------------------------------------+
      | localhost | mariadb.sys | {"access":0,"plugin":"mysql_native_password","authentication_string":"","account_locked":true,"password_last_changed":0}                   |
      | localhost | root        | {"access":18446744073709551615,"plugin":"mysql_native_password","authentication_string":"invalid","auth_or":[{},{"plugin":"unix_socket"}]} |
      | localhost | dan         | {"access":18446744073709551615,"plugin":"mysql_native_password","authentication_string":"invalid","auth_or":[{},{"plugin":"unix_socket"}]} |
      | localhost |             | {}                                                                                                                                         |
      | bark      |             | {}                                                                                                                                         |
      +-----------+-------------+--------------------------------------------------------------------------------------------------------------------------------------------+
      5 rows in set (0.000 sec)
      
      MariaDB [mysql]> show grants;
      +----------------------------------------------------------------------------------------------------------------------------------------+
      | Grants for dan@localhost                                                                                                               |
      +----------------------------------------------------------------------------------------------------------------------------------------+
      | GRANT ALL PRIVILEGES ON *.* TO `dan`@`localhost` IDENTIFIED VIA mysql_native_password USING 'invalid' OR unix_socket WITH GRANT OPTION |
      | GRANT PROXY ON ''@'%' TO 'dan'@'localhost' WITH GRANT OPTION                                                                           |
      +----------------------------------------------------------------------------------------------------------------------------------------+
      8bbe3a3c
  2. 15 Sep, 2023 4 commits
    • Yuchen Pei's avatar
      MDEV-32157 MDEV-28856 Spider: Tests, documentation, small fixes and cleanups · 18990f00
      Yuchen Pei authored
      Removed some redundant hint related string literals from
      spd_db_conn.cc
      
      Clean up SPIDER_PARAM_*_[CHAR]LEN[S]
      
      Adding tests covering monitoring_kind=2. What it does is that it reads
      from mysql.spider_link_mon_servers with matching db_name, table_name,
      link_id, and does not do anything about that...
      
      How monitoring_* can be useful: in the deprecated spider high
      availability feature, when one remote fails, spider will try another
      remote, which apparently makes use of these table parameters.
      
      A test covering the query_cache_sync table param. Some further tests
      on some spider table params.
      
      Wrapper should be case insensitive.
      
      Code documentation on spider priority binary tree.
      
      Add an assertion that static_key_cardinality is always -1. All tests
      pass still
      18990f00
    • Yuchen Pei's avatar
      MDEV-32157 MDEV-28856 Spider: drop server in tests · 3b3200e2
      Yuchen Pei authored
      This helps eliminate "server exists" failures
      
      Also, spider/bugfix.mdev_29676, when enabled after MDEV-29525 is
      pushed will fail because we have not --recorded the result. But the
      failure will only emerge when working on MDEV-31138 where we manually
      re-enable this test, so let's worry about that then.
      3b3200e2
    • Yuchen Pei's avatar
      MDEV-31787 MDEV-26151 Add a test exercising non-0 spider_casual_read · 96760d3a
      Yuchen Pei authored
      Also:
      - clean up spider_check_and_get_casual_read_conn() and
        spider_check_and_set_autocommit()
      - remove a couple of commented out code blocks
      96760d3a
    • Yuchen Pei's avatar
  3. 14 Sep, 2023 5 commits
  4. 13 Sep, 2023 3 commits
    • Brandon Nesterenko's avatar
      MDEV-31177: SHOW SLAVE STATUS Last_SQL_Errno Race Condition on Errored Slave Restart · 1407f999
      Brandon Nesterenko authored
      The SQL thread and a user connection executing SHOW SLAVE STATUS
      have a race condition on Last_SQL_Errno, such that a slave which
      previously errored and stopped, on its next start, SHOW SLAVE STATUS
      can show that the SQL Thread is running while the previous error is
      also showing.
      
      The fix is to move when the last error is cleared when the SQL
      thread starts to occur before setting the status of
      Slave_SQL_Running.
      
      Thanks to Kristian Nielson for his work diagnosing the problem!
      
      Reviewed By:
      ============
      Andrei Elkin <andrei.elkin@mariadb.com>
      Kristian Nielson <knielsen@knielsen-hq.org>
      1407f999
    • Daniel Black's avatar
      MDEV-31369 Disable TLS v1.0 and 1.1 for MariaDB · 1831f8e4
      Daniel Black authored
      Remove TLSv1.1 from the default tls_version system variable.
      
      Output a warning if TLSv1.0 or TLSv1.1 are selected.
      
      Thanks Tingyao Nian for the feature request.
      1831f8e4
    • Oleg Smirnov's avatar
      MDEV-31315 Add client_ed25519.dll to the list of plugins shipped with HeidiSQL · 5fe8d0d5
      Oleg Smirnov authored
      There is a list of plugins in the WiX configuration file for HeidiSQL,
      and the installer only installs DLLs from that list although the HeidiSQL
      portable archive may include other plugins.
      
      This commit adds client_ed25519.dll to this list and also rearranges
      the list alphabetically, so it is easier to verify its contents
      5fe8d0d5
  5. 11 Sep, 2023 9 commits
  6. 09 Sep, 2023 1 commit
  7. 08 Sep, 2023 7 commits
  8. 07 Sep, 2023 1 commit
    • Kristian Nielsen's avatar
      MDEV-10356: rpl.rpl_parallel_temptable failure due to incorrect commit optimization of temptables · e937a64d
      Kristian Nielsen authored
      The problem was that parallel replication of temporary tables using
      statement-based binlogging could overlap the COMMIT in one thread with a DML
      or DROP TEMPORARY TABLE in another thread using the same temporary table.
      Temporary tables are not safe for concurrent access, so this caused
      reference to freed memory and possibly other nastiness.
      
      The fix is to disable the optimisation with overlapping commits of one
      transaction with the start of a later transaction, when temporary tables are
      in use. Then the following event groups will be blocked from starting until
      the one using temporary tables is completed.
      
      This also fixes occasional test failures of rpl.rpl_parallel_temptable seen
      in Buildbot.
      Signed-off-by: default avatarKristian Nielsen <knielsen@knielsen-hq.org>
      e937a64d
  9. 06 Sep, 2023 8 commits
  10. 05 Sep, 2023 1 commit
    • Aleksey Midenkov's avatar
      MDEV-30836 MTR hangs after tests have completed · a49b9314
      Aleksey Midenkov authored
      The problem is in manager/worker communication when worker sends
      WARNINGS and then TESTRESULT. If manager yet didn't read WARNINGS
      response both responses get into the same buffer, can_read() will
      indicate we have data only once and we must read all the data from the
      socket at once. Otherwise TESTRESULT response is lost and manager
      waits it forever.
      
      The fix now instead of single line reads the socket in a loop. But if
      there is only one response in the buffer the second read will be
      blocked waiting until new data arrives. That can be overcame by
      blocking(0) which sets the handle into non-blocking mode. If there is
      no data second read just returns undef.
      
      The problem is non-blocking mode is not supported by all perl flavors
      on Windows. Strawberry and ActiveState do not support it. Cygwin and
      MSYS2 do support. There is some ioctl() hack that was known to "work"
      but it doesn't do what is expected (it does not return data when there
      is data). So for Windows if it is not Cygwin we disable the fix.
      a49b9314