Avatar
임호현
좋아요
댓글
MariaDB 10.4 변경 및 개선사항

 

  • 참고

  • 새로 구현된 기능
    • Authentication
      • https://mariadb.com/kb/en/library/authentication-from-mariadb-104/
      • Overview
        • 사용자들에 하나 이상의 authentication plugin 사용 가능
        • mysql_install_db 스크립트에 의해 생성된 root@localhost 계정은 두개의 인증 플러그인을 사용하게 생성된다.
          • 먼저 unix_socket authentication plugin을 사용하여 암호 없이 로그인 시도를합니다.
          • unix_socket을 이용한 인증이 실패하면 myql_native_password 인증 플러그인을 사용하여 로그인하려 시도합니다.(유효하지 않은 password가 설정되어 있으므로 암호 설정 필요)
        • 모든 사용자 account, password, global privileges 들은 mysql.global_priv 테이블에 저장되며 mysql.user 테이블은 mysql.global_priv의 뷰일 뿐이다.
        • User password expiry를 지원하지만 default는 아님.

          +-----------+-------+--------------------------------------------------------------------------------------------------------------------------------------------+
          | Host      | User  | Priv                                                                                                                                       |
          +-----------+-------+--------------------------------------------------------------------------------------------------------------------------------------------+
          | localhost | root  | {"access":18446744073709551615,"plugin":"mysql_native_password","authentication_string":"invalid","auth_or":[{},{"plugin":"unix_socket"}]} |
          | localhost | mysql | {"access":18446744073709551615,"plugin":"mysql_native_password","authentication_string":"invalid","auth_or":[{},{"plugin":"unix_socket"}]} |
          | localhost |       | {}                                                                                                                                         |
          | server06  |       | {}                                                                                                                                         |
          +-----------+-------+--------------------------------------------------------------------------------------------------------------------------------------------+

           

      • unix_socket authentication plugin
        • https://mariadb.com/kb/en/library/authentication-plugin-unix-socket/
        • 10.4.3 이후 버전 부터 default로 설치되고 root@localhost 기본 사용자 계정에 의해 사용된다.
        • unix_socket authentication plugin은 unix socket 파일을 통해 MariaDB에 접속할 때 사용자가 OS credentials을 사용하는 것을 허용한다.
        • unix_socket authentication plugin은 SO_PEERCRED socket 옵션과 함께 getsockopt 시스템콜을 호출하여 작동한다. 이것은 프로세스에 연결되어 있는 소켓의 uid를 추출하는 것을 허용하고, 이 uid과 연관된 user name을 얻어 연결하려는 사용자의 인증을 처리한다.
        • unix_socket plugin 비활성화

          • [mysqld] 이나 [mariadb] option group에서 unix_socket=OFF로 비활성화

            [mariadb]
            ...
            unix_socket=OFF

             

          • [mysqld] 이나 [mariadb] option group에서 disable_unix_socket 파라미터로  비활성화

            [mariadb]
            ...
            disable_unix_socket

             

        • unix_socket plugin 설치

          • auth_socket.so 으로 기본적으로 배포되지만 디폴트로 설치 되지는 않음

            # 설치방법 1
            INSTALL SONAME 'auth_socket';
            
            
            
            # 설치방법 2
            [mariadb]
            ...
            plugin_load_add = auth_socket

             

          • 삭제

            UNINSTALL SONAME 'auth_socket';
            >> 또는 configuration file이나 startup option에서 삭제

             

        • 사용자 생성

          CREATE USER username@hostname IDENTIFIED VIA unix_socket;
          
          
          #  SQL_MODE에 NO_AUTO_CREATE_USER 가 설정되있지 않은 경우 아래와 같이도 가능
          GRANT SELECT ON db.* TO username@hostname IDENTIFIED VIA unix_socket;

           

        • 기존의 Password-based Authentication으로 변경

          ALTER USER root@localhost IDENTIFIED VIA mysql_native_password;
          SET PASSWORD = PASSWORD('foo');

           

      • User password expiry
        • 10.4.3 버전부터 소개됨.
        • 이 기능은 관리자가 사용자 패스워드를 expire 수동/자동으로 할수 있다.
        • default_password_lifetime과 disconnect_on_expired_password 두 가지 system variable이 이기능에 영향을 미친다.
          • default_password_lifetime
            • 이 사용자에게 패스워드를 변경을 요구할 시간, 기본 값 0은 이 기능을 disable한다.
          • disconnect_on_expired_password
            • 패스워드가 만료되었을 때 사용자를 패스워드 재설정을 위한 제한된 쿼리집합 수행을 할수 있는 sand box mode에 연결을 허용할지 말지를 설정할 수있다.
            • 기본값은 OFF 이다.
        • 사용자에 암호 만료 제한 설정

          # 설정의 예
          CREATE USER 'monty'@'localhost' PASSWORD EXPIRE INTERVAL 120 DAY;
          ALTER USER 'monty'@'localhost' PASSWORD EXPIRE INTERVAL 120 DAY;
          
          # 제한 비활성
          CREATE USER 'monty'@'localhost' PASSWORD EXPIRE NEVER;
          ALTER USER 'monty'@'localhost' PASSWORD EXPIRE NEVER;
          
          # 시스템 기본값으로 변경
          CREATE USER 'monty'@'localhost' PASSWORD EXPIRE DEFAULT;
          ALTER USER 'monty'@'localhost' PASSWORD EXPIRE DEFAULT;

           

      • Account Locking
        • 10.4.2 버전에서 소개 됨.
        • 계정을 LOCK하면 새로운 커넥션을 만들수 없다(기존의 커넥션은 상관없음)
        • Account Lock 사용의 예

          # lock
          CREATE USER 'lorin'@'localhost' ACCOUNT LOCK;
          ALTER USER 'marijn'@'localhost' ACCOUNT LOCK;
          
          
          # unlock
          ALTER USER 'lorin'@'localhost' ACCOUNT UNLOCK;

           

      • mysql.host table 더이상 만들지 않음.
        • 5.5 버전까지는 privileges와 관련이 있지만 10점대 버전에서는 사용하지 않음
      • 많은 사용자나 db grant를 가진 경우의 권한 체크 속도를 향상 시킴(MDEV-15649)

      • 사용자 계정과 글로벌 권한은 mysql.global_priv 테이블에 저장됨.mysql.user 테이블은 이제 mysql.global_priv 테이블의 뷰임.

      • SET PASSWORD support for ed25519 and other authentication plugins (MDEV-12321)

    • InnoDB
      • Instant DROP COLUMN 을 지원
        • non-Unique multi-column index에 대해  ADD INDEX가 가능
          • ALGORITHM=INSTANT는 허용하지 않지만 ALGORITHM=NOCOPY는 허용합니다.(MDEV-15562)
      • ROW_FORMAT=DYNAMIC 과 ROW_FORMAT=COMPACT 등에 대해 더 많은 Instant VARCHAR 확장을 제공(MDEV-15563)
        • change CHAR(0) to any VARCHAR
        • change a CHAR that is longer than 255 bytes to VARCHAR or wider CHAR
        • change a VARCHAR that is shorter than 128 bytes into any longer VARCHAR
      • 인덱싱 되지 않은 열에 대한 charset 변경 또는 즉각적인 정렬(MDEV-15564)
        • 테이블 rebuild 없이 수행
      • undo 테이블스페이스 초기화를 위한 redo log 볼륨 축소(MDEV-17138)
      • 10.2.19 이전 TRUNCATE TABLE에 대한 crash-upgrade 지원 제거 (MDEV-13564)
      • innodb_encrypt_log rotation을 위한 key 추가(MDEV-12041)
      • innodb_checksum_algorithm=full_crc32 구현(MDEV-12026)
      • index range scan으로 구성된 in-memory PK filter 사용 (MDEV-16188)
    • Optimizer
      • optimizer trace 구현 (MDEV-6111)
        • 10.4.3 에서 소개됨
        • optimization phase 동안 옵티마이져에 의해 결정들에 관한 정보를를 trace
        • 관련 system variables
          • optimizer_trace
            • 옵티마이져 trace 기능을 컨트롤
            • optimizer_trace=option=val[,option=val...]
            • Default Value : enabled=off
          • optimizer_trace_max_mem_size
            • trace를 저장할 최대 memory 크기(bytes)
            • Default Value : 1048576(1~18446744073709551615)
        • https://mariadb.com/kb/en/library/optimizer-trace-overview/
        • SELECT, UPDATE, DELETE 쿼리 trace 가능
        • 활성화 및 조회
          • SET optimizer_trace='enabled=on';
          • INFORMATION_SCHEMA.OPTIMIZER_TRACE 테이블 조회
        • 제약사항
          • 현재 top-level의 statement 만 trace 할수 있다.(stored procedure의 sub-statement는 추적 할수 없음)
      • Engine Independent Table Statistics
        • https://mariadb.com/kb/en/library/engine-independent-table-statistics/
        • 10.0.1에서 구현됨. 10.4 부터 디폴트으로 수집함.
          • 10.0 이전에는 옵티마이져는 쿼리 옵티마이져를 위한 통계정보 제공이 스토리지 엔진(e.g. innodb)에 의존적이고 이것은 아래와 같은 몇가지 문제점이 있기 때문에 이것을 극복하기 위해 Engine Independent Table Statistics를 만듬
            • 스토리지 엔진들은 빈약한 통계를 제공함.
            • 통계가 스토리지 엔진 인터페이스를 통해 제공받으므로 어떤 종류의 데이터가 제공되는 지에 대한 많은 제약이 있음(예 인덱스가 없는 컬럼에 대한 정보는 제공받을 수 없음)
            • 통계를 거의 컨트롤하지 못하고 현재의 통계값을 고정하거나 자신만의 값을 제공할 방법이 없음.
        • Engine Independent Table Statistics은 mysql database의 정규테이블에 저장되어 DBA가 이것을 update, read 가 가능해짐
        • 더 많은 데이터가 수집/사용된다.
        • mysql.table_stats, mysql.column_stats, mysql.index_stats에 통계가 저장됨
          • use_stat_tables로 이 테이블들의 데이터를 업데이트 및 사용 가능
            • use_stat_tables 시스템 변수

              • 기본값: preferably_for_queries
              • 사용 가능한 값

                Value Meaning
                never 10.4.0 이하의 버전의 기본 값으로 통계 테이블을 사용하지 않음
                complementary 스토리지 엔진이 같은 종류의 데이터를 제공하지 않는다면 옵티마이저 통계 테이블을 사용한다.
                preferably 통계 테이블의 데이터를 더 선호 한다. 통계테이블을 사용할 수 없는 경우에 스토리지 엔진의 데이터를 사용한다.
                complementary_for_queries 10.4.1 부터 사용할 수 있고, complementary와 동일하지만 쿼리들에 대해서만 사용한다.(ANALYZE TABLE와 같이 불필요한 수집을 피함)
                preferably_for_queries 10.4.1 부터 사용할 수 있고, preferably와 동일하지만 쿼리들에 대해서만 사용한다.(ANALYZE TABLE와 같이 불필요한 수집을 피함)

                 

          • optimizer_use_condition_selectivity
      • otimizer_switch 시스템 변수 변경 사항
    • Syntax
      • application-time periods 기능을 지원하기 위해 System-versioning 기능이 확장됨.
      • UNION/EXCEPT/INTERSECT 연산의 우선순위 지정을 위해 대괄호를 지원(MDEV-11953)
        • e.g. ((SELECT a from t1) union (SELECT b from t2)) intersect (select c from t3)
      • 서버의 재기동 없이 SSL certification을 reload하기 위한 "FLUSH SSL" 명령어 추가 (MDEV-16266)
      • CAST 기능 추가(MDEV-17776)
        • CAST(x AS INTERVAL DAY_SECOND(N))
      • "NOT EXISTS" 구문 및 "IF EXISTS" 구문 추가(MDEV-16294)
        • INSTALL PLUGIN
          • INSTALL PLUGIN [IF NOT EXISTS] plugin_name SONAME 'plugin_library'

        • UNINSTALL PLUGIN
          • UNINSTALL PLUGIN [IF EXISTS] plugin_name
        • UNINSTALL SONAME
          • UNINSTALL SONAME [IF EXISTS] 'plugin_library'
    • Variables

 

    • Replication
      • binary logs 로테이션 속도 증가(MDEV-19116)
      • "SHOW BINARY LOGS" 커맨드 수행 중 binary log index 파일 잠김 버그 수정(MDEV-19117)
      • 새로운 서버 명령어 추가
        • 10.4.4 부터 사용 가능

        • shutdown 하기 전에 모든 슬레이브에 마지막 binlog event를 보낼때 까지 기다린다.

          SHUTDOWN WAIT FOR ALL SLAVE ;
          mysqladmin shutdown --wait-for-all-slaves

           

    • Galera 4
      • MariaDB 10.4.2 이후 버전 부터 Galera 4 버전으로 업그레이드됨

        Galera Version Released in MariaDB Version
        26.4.2 MariaDB 10.4.4
        26.4.1 MariaDB 10.4.3
        26.4.0 MariaDB 10.4.2

         

      • Galera 4 의 신규 기능
        • mysql 데이터베이스에 Galera replication을 위한 새로운 테이블 추가(End Users에게는 read_only, 수정 불가)
          • wsrep_cluster
          • wsrep_cluster_members
          • wsrep_streaming_log
        • 새로운 streaming replication 기능은 unlimited size replicating transaction을 허용한다. 
          • 클러스터는 transaction을 실행하는 동안 트랜잭션을 small fragment들로 복제를하고 이 기능은 wsrep_trx_fragment_unit과 wsrep_trx_fragment_size 등의 새로운 시스템 변수로 컨트롤한다.
            • wsrep_trx_fragment_unit : fragment를 위한 transaction size limit 측정 법을 위한 metric을 정의
              • bytes : 트랜잭션의 binlog event buffer size(bytes)
              • rows : 트랜잭션에 의해 영향을 받는 row의 수
              • statements : multi-statement 트랜잭션으로 수행되는 SQL 문장의 수
            • wsrep_trx_fragment_size : fragmenting(조각을 나누는 것)의 제한을 정의하고 설정된 unit(wsrep_trx_fragment_unit)의 관점에서 transaction의 크기가 이 limit size를 넘어가면 새로운 fragment로 복제된다.
        • galera replication을 통해 복제된 트랜잭션은 group commit logic으로 처리되고 이것은 트랜잭션 처리량에 영향을 미친다.(특히 binary log가 활성화된 클러스터에 영향을 많이 미친다.)
      • Galera 4 의 제약사항

 

    • General
      • 시스템 테이블을 Crash에서 안전하게 Aria 스토리지 엔진 기반으로 변경

        • 아래의 MyISAM 테이블 들이 Aria 스토리지 엔진으로 변경됨.

          root@localhost [imsi] 18:05:01> select table_schema,table_name,table_type,engine from information_schema.tables where engine in ('MyISAM') order by 1,2;
          +--------------------+---------------------------+-------------+--------+
          | table_schema       | table_name                | table_type  | engine |
          +--------------------+---------------------------+-------------+--------+
          | mysql              | columns_priv              | BASE TABLE  | MyISAM |
          | mysql              | column_stats              | BASE TABLE  | MyISAM |
          | mysql              | db                        | BASE TABLE  | MyISAM |
          | mysql              | event                     | BASE TABLE  | MyISAM |
          | mysql              | func                      | BASE TABLE  | MyISAM |
          | mysql              | help_category             | BASE TABLE  | MyISAM |
          | mysql              | help_keyword              | BASE TABLE  | MyISAM |
          | mysql              | help_relation             | BASE TABLE  | MyISAM |
          | mysql              | help_topic                | BASE TABLE  | MyISAM |
          | mysql              | host                      | BASE TABLE  | MyISAM |	<---- 10.4 버전에서 삭제됨.
          | mysql              | index_stats               | BASE TABLE  | MyISAM |
          | mysql              | plugin                    | BASE TABLE  | MyISAM |
          | mysql              | proc                      | BASE TABLE  | MyISAM |
          | mysql              | procs_priv                | BASE TABLE  | MyISAM |
          | mysql              | proxies_priv              | BASE TABLE  | MyISAM |
          | mysql              | roles_mapping             | BASE TABLE  | MyISAM |
          | mysql              | servers                   | BASE TABLE  | MyISAM |
          | mysql              | tables_priv               | BASE TABLE  | MyISAM |
          | mysql              | table_stats               | BASE TABLE  | MyISAM |
          | mysql              | time_zone                 | BASE TABLE  | MyISAM |
          | mysql              | time_zone_leap_second     | BASE TABLE  | MyISAM |
          | mysql              | time_zone_name            | BASE TABLE  | MyISAM |
          | mysql              | time_zone_transition      | BASE TABLE  | MyISAM |
          | mysql              | time_zone_transition_type | BASE TABLE  | MyISAM |
          | mysql              | user                      | BASE TABLE  | MyISAM |
          +--------------------+---------------------------+-------------+--------+
          37 rows in set (0.013 sec)

           

      • Linux abstract socket support 추가(MDEV-15655)
        • 특정 조건에서 mysqld 데몬이 소켓을 제거하기 전에 다른 프로세스가 그것을 사용 중인지 체크를 못하는 버그 fix (MDEV-5479)
      • C++11을 atomic operation에 사용 (MDEV-16410)
        • 모든 atomic accesses가 C++11 으로 migarte 된 것은 아님
      • Unicode collation들의 성능 개선 (MDEV-17534MDEV-17511MDEV-17502MDEV-17474)
      • data type plugin들 추가 진행중(MDEV-4912)
      • TIMESTAMP(), ADDTIME() 등의 function을 돕기 위한 SQL 표준 INTERNAL 지원의 개선사항들은 좀더 예측가능한 결과를 반환하게 됨.
        • 그동안 MariaDB는 아래의 두가지 값을 가진 TIME 데이터 타입을 사용했음
          • time of the day : 00:00:00 ~ 23:59:59.999999
          • duration : -838:59:59.999999 ~ +838:59:59.999999
        • 모호성을 제거하고 표준 SQL 적합성을 위해 INTERNAL data type을 도입할 계획
          • INTERNAL 데이터 타입은 -87649415:59:59.999999 ~ +87649415:59:59.999999 까지 저장가능
          • TIMESTAMP'0001-01-01 00:00:00' ~ TIMESTAMP'9999-12-31 23:59:59.999999' 값을 나타내기에 충분함
        • 첫번째 단계로 TIME과 비슷한 문자열과 숫자 값이 INTERNAL context에서 사용될때 중간 계산을 위한 범위 값을 지원(e.g. 아래의 함수에서 2번째 argument)
          • TIMESTAMP(ts,interval) 
          • ADDTIME(ts,interval)

            # 10.4.6 버전
            MariaDB [information_schema]> SELECT ADDTIME(TIMESTAMP'0001-01-01 00:00:00', '87649415:59:59.999999');
            +------------------------------------------------------------------+
            | ADDTIME(TIMESTAMP'0001-01-01 00:00:00', '87649415:59:59.999999') |
            +------------------------------------------------------------------+
            | 9999-12-31 23:59:59.999999                                       |
            +------------------------------------------------------------------+
            1 row in set (0.000 sec)
            
            MariaDB [information_schema]> SELECT TIMESTAMP(DATE'0001-01-01', '87649415:59:59.999999') ;
            +------------------------------------------------------+
            | TIMESTAMP(DATE'0001-01-01', '87649415:59:59.999999') |
            +------------------------------------------------------+
            | 9999-12-31 23:59:59.999999                           |
            +------------------------------------------------------+
            1 row in set (0.000 sec)
            
            MariaDB [information_schema]> SELECT ADDTIME(TIME'-838:59:59.999999', '1677:59:59.999998');
            +-------------------------------------------------------+
            | ADDTIME(TIME'-838:59:59.999999', '1677:59:59.999998') |
            +-------------------------------------------------------+
            | 838:59:59.999999                                      |
            +-------------------------------------------------------+
            1 row in set (0.000 sec)
            
            
            
            # 10.3.16 버전
            +------------------------------------------------------------------+
            | ADDTIME(TIMESTAMP'0001-01-01 00:00:00', '87649415:59:59.999999') |
            +------------------------------------------------------------------+
            | 0001-02-04 22:59:59.999999                                       |
            +------------------------------------------------------------------+
            1 row in set, 1 warning (0.002 sec)
            
            root@localhost [imsi] 18:31:13> SELECT TIMESTAMP(DATE'0001-01-01', '87649415:59:59.999999');
            +------------------------------------------------------+
            | TIMESTAMP(DATE'0001-01-01', '87649415:59:59.999999') |
            +------------------------------------------------------+
            | 0001-02-04 22:59:59.999999                           |
            +------------------------------------------------------+
            1 row in set, 1 warning (0.000 sec)
            
            root@localhost [imsi] 18:31:19> SELECT ADDTIME(TIME'-838:59:59.999999', '1677:59:59.999998');
            +-------------------------------------------------------+
            | ADDTIME(TIME'-838:59:59.999999', '1677:59:59.999998') |
            +-------------------------------------------------------+
            | 00:00:00.000000                                       |
            +-------------------------------------------------------+
            1 row in set, 1 warning (0.001 sec)
            
            
            

             

      • 새로운 x_remove 메소드를 통해 window UDF functions 지원(MDEV-15073)
      • JSON service 위한 audit plugins (MDEV-5313)
      • FLUSH TABLES 동작방식 변경 (MDEV-5336)
        • 이전에는 FLUSH TABLES 수행하면 제공된 테이블 리스트를 닫거나 테이블리스트가 없는 경우 모든 테이블을 닫는다.
        • MariaDB 10.4.1 변경사항
          • FLUSH TABLES 수행 시 어떠한 테이블 리스트도 제공하지 않는 것은 "사용하지 않는" 테이블들만 닫고 테이블들은 FLUSH TABLES connection에 의해 lock되지 않는다.
          • locked 테이블이 없다면 FLUSH TABLES 바로 수행되고 더이상 사용중 인 테이블을 기다리지 않기 때문에 어떠한 wait도 발생하지 않는다.
          • 테이블 리스트가 제공된다면 서버는 리스트된 테이블이 사용중인 어떠한 트랜잭션의 종료까지 대기할것이다. 이전까지는 트랜잭션이 아니라 문장의 완료될때까지 기다렸다. 
      • JSON_VALID 함수는 JSON data type alias을 위한 CHECK constraint 에 자동적으로 사용된다.(유효한 JSON document가 삽입되었는지 확인하기 위해)(MDEV-13916)
      • MariaDB Named Commands (MDEV-17591)

        [root@server06 bin]# ls -l /usr/bin/mariadb*
        lrwxrwxrwx 1 root root    5  7월 23 11:29 /usr/bin/mariadb -> mysql
        lrwxrwxrwx 1 root root   11  7월 23 11:29 /usr/bin/mariadb-access -> mysqlaccess
        lrwxrwxrwx 1 root root   10  7월 23 11:29 /usr/bin/mariadb-admin -> mysqladmin
        lrwxrwxrwx 1 root root   11  7월 23 11:29 /usr/bin/mariadb-binlog -> mysqlbinlog
        lrwxrwxrwx 1 root root   10  7월 23 11:29 /usr/bin/mariadb-check -> mysqlcheck
        lrwxrwxrwx 1 root root   26  7월 23 11:29 /usr/bin/mariadb-convert-table-format -> mysql_convert_table_format
        lrwxrwxrwx 1 root root    9  7월 23 11:29 /usr/bin/mariadb-dump -> mysqldump
        lrwxrwxrwx 1 root root   13  7월 23 11:29 /usr/bin/mariadb-dumpslow -> mysqldumpslow
        lrwxrwxrwx 1 root root   14  7월 23 11:29 /usr/bin/mariadb-embedded -> mysql_embedded
        lrwxrwxrwx 1 root root   15  7월 23 11:29 /usr/bin/mariadb-find-rows -> mysql_find_rows
        lrwxrwxrwx 1 root root   20  7월 23 11:29 /usr/bin/mariadb-fix-extensions -> mysql_fix_extensions
        lrwxrwxrwx 1 root root   12  7월 23 11:29 /usr/bin/mariadb-hotcopy -> mysqlhotcopy
        lrwxrwxrwx 1 root root   11  7월 23 11:29 /usr/bin/mariadb-import -> mysqlimport
        lrwxrwxrwx 1 root root   16  7월 23 11:29 /usr/bin/mariadb-install-db -> mysql_install_db
        lrwxrwxrwx 1 root root   12  7월 23 11:29 /usr/bin/mariadb-plugin -> mysql_plugin
        lrwxrwxrwx 1 root root   25  7월 23 11:29 /usr/bin/mariadb-secure-installation -> mysql_secure_installation
        -rwxr-xr-x 1 root root 2488  6월 18 07:00 /usr/bin/mariadb-service-convert
        lrwxrwxrwx 1 root root   19  7월 23 11:29 /usr/bin/mariadb-setpermission -> mysql_setpermission
        lrwxrwxrwx 1 root root    9  7월 23 11:29 /usr/bin/mariadb-show -> mysqlshow
        lrwxrwxrwx 1 root root    9  7월 23 11:29 /usr/bin/mariadb-slap -> mysqlslap
        lrwxrwxrwx 1 root root   19  7월 23 11:29 /usr/bin/mariadb-tzinfo-to-sql -> mysql_tzinfo_to_sql
        lrwxrwxrwx 1 root root   13  7월 23 11:29 /usr/bin/mariadb-upgrade -> mysql_upgrade
        lrwxrwxrwx 1 root root   13  7월 23 11:29 /usr/bin/mariadb-waitpid -> mysql_waitpid
        lrwxrwxrwx 1 root root   12  7월 23 11:29 /usr/bin/mariadbd-multi -> mysqld_multi
        lrwxrwxrwx 1 root root   11  7월 23 11:29 /usr/bin/mariadbd-safe -> mysqld_safe
        lrwxrwxrwx 1 root root   18  7월 23 11:29 /usr/bin/mariadbd-safe-helper -> mysqld_safe_helper