2018年3月20日火曜日

MySQL 8.0.4rc

MySQL 8.0.4rcは、「 一般公開前のドラフト:2018-03-19 」としてリリースされました 。 

私は素早く覗いて、ここに私の印象を書き留めることにしました。 このリリースはしばらく話されていたので、これはいくつかの古いニュースですが、とにかく私の考えを追加しました。

私が気づいた最初のことは、更新されたmysqlクライアントを使うという簡単な問題でした。 私の古いバージョンはまだ私の道に残っていた

ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded
簡単な修正と有効な最新のmysqlクライアントを使用していることを確認してください。 もちろん、認証プラグインをmysql_native_passwordに戻して変更するなど、他のオプションも存在しましたが、なぜセキュリティメソッドを使用するのか気にしないでください。 これはセキュリティの非常に優れた拡張です。このより安全な方法を使用して接続を取得しているときに接続の問題がある場合は、驚かないでください。


Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 36
Server version: 8.0.4-rc-log

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

だから最初の非常にクールな強化...

mysql> show create table user\G
*************************** 1. row ***************************
テーブル:ユーザー
テーブルの作成:CREATE TABLE `user`(
`Host` char(60)COLLATE utf8_bin NOT NULL DEFAULT ''、
`User` char(32)COLLATE utf8_bin NOT NULL DEFAULT ''、
`Select_priv` enum( 'N'、 'Y')キャラクタセットutf8 NOT NULL DEFAULT 'N'、
`Insert_priv` enum( 'N'、 'Y')CHARACTER SET utf8 NOT NULL DEFAULT 'N'、
`Update_priv` enum( 'N'、 'Y')キャラクタセットutf8 NOT NULL DEFAULT 'N'、
`Delete_priv`列挙型( 'N'、 'Y')文字セットutf8 NOT NULL DEFAULT 'N'、
`Create_priv`列挙型( 'N'、 'Y')キャラクタセットutf8 NOT NULL DEFAULT 'N'、
`Drop_priv` enum( 'N'、 'Y')キャラクタセットutf8 NOT NULL DEFAULT 'N'、
`Reload_priv` enum( 'N'、 'Y')キャラクタセットutf8 NOT NULL DEFAULT 'N'、
`Shutdown_priv` enum( 'N'、 'Y')文字セットutf8 NOT NULL DEFAULT 'N'、
`Process_priv` enum( 'N'、 'Y')文字セットutf8 NOT NULL DEFAULT 'N'、
`File_priv` enum( 'N'、 'Y')キャラクタセットutf8 NOT NULL DEFAULT 'N'、
`Grant_priv` enum( 'N'、 'Y')文字セットutf8 NOT NULL DEFAULT 'N'、
`References_priv` enum( 'N'、 'Y')CHARACTER SET utf8 NOT NULL DEFAULT 'N'、
`Index_priv` enum( 'N'、 'Y')キャラクタセットutf8 NOT NULL DEFAULT 'N'、
`Alter_priv` enum( 'N'、 'Y')キャラクタセットutf8 NOT NULL DEFAULT 'N'、
`Show_db_priv` enum( 'N'、 'Y')文字セットutf8 NOT NULL DEFAULT 'N'、
`Super_priv` enum( 'N'、 'Y')CHARACTER SET utf8 NOT NULL DEFAULT 'N'、
`Create_tmp_table_priv` enum( 'N'、 'Y')文字セットutf8 NOT NULL DEFAULT 'N'、
`Lock_tables_priv` enum( 'N'、 'Y')文字セットutf8 NOT NULL DEFAULT 'N'、
`Execute_priv` enum( 'N'、 'Y')キャラクタセットutf8 NOT NULL DEFAULT 'N'、
`Repl_slave_priv` enum( 'N'、 'Y')文字セットutf8 NOT NULL DEFAULT 'N'、
`Repl_client_priv` enum( 'N'、 'Y')キャラクタセットutf8 NOT NULL DEFAULT 'N'、
`Create_view_priv` enum( 'N'、 'Y')キャラクタセットutf8 NOT NULL DEFAULT 'N'、
`Show_view_priv` enum( 'N'、 'Y')キャラクタセットutf8 NOT NULL DEFAULT 'N'、
`Create_routine_priv` enum( 'N'、 'Y')キャラクタセットutf8 NOT NULL DEFAULT 'N'、
`Alter_routine_priv` enum( 'N'、 'Y')キャラクタセットutf8 NOT NULL DEFAULT 'N'、
`Create_user_priv` enum( 'N'、 'Y')キャラクタセットutf8 NOT NULL DEFAULT 'N'、
`Event_priv` enum( 'N'、 'Y')文字セットutf8 NOT NULL DEFAULT 'N'、
`Trigger_priv` enum( 'N'、 'Y')文字セットutf8 NOT NULL DEFAULT 'N'、
`Create_tablespace_priv` enum( 'N'、 'Y')文字セットutf8 NOT NULL DEFAULT 'N'、
`ssl_type` enum( ''、 'ANY'、 'X509'、 'SPECIFIED')キャラクタセットutf8 NOT NULL DEFAULT ''、
`ssl_cipher` blobはNULLではありませんが、
`x509_issuer`ブロブはNULLではない、
`x509_subject` blob NOT NULL、
`max_questions` int(11)unsigned NOT NULL DEFAULT '0'、
`max_updates` int(11)unsigned NOT NULL DEFAULT '0'、
`max_connections` int(11)unsigned NOT NULL DEFAULT '0'、
`max_user_connections` int(11)unsigned NOT NULL DEFAULT '0'、
`plugin` char(64)COLLATE utf8_bin NOT NULL DEFAULT 'caching_sha2_password'、
`authentication_string`テキストCOLLATE utf8_bin、
`password_expired` enum( 'N'、 'Y')文字セットutf8 NOT NULL DEFAULT 'N'、
`password_last_changed`タイムスタンプNULL DEFAULT NULL、
`password_lifetime` smallint(5)符号なしDEFAULT NULL、
`account_locked`列挙型( 'N'、 'Y')キャラクタセットutf8 NOT NULL DEFAULT 'N'、
`Create_role_priv` enum( 'N'、 'Y')キャラクタセットutf8 NOT NULL DEFAULT 'N'、
`Drop_role_priv` enum( 'N'、 'Y')文字セットutf8 NOT NULL DEFAULT 'N'、
`Password_reuse_history` smallint(5)unsigned DEFAULT NULL、
`Password_reuse_time` smallint(5)unsigned DEFAULT NULL、
PRIMARY KEY( `Host`、` User`)
)/ *!50100 TABLESPACE `mysql` * / ENGINE = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_bin STATS_PERSISTENT = 0 COMMENT = 'ユーザーとグローバル特権'
1行セット(0.00秒)

YEPのユーザーテーブルはInnoDBであり、独自のTableSpaceを持っています。

新しいデータディクショナリを追加すると、Information_schemaの変更が通知されます。
したがって、単純な例として、Columnsテーブルは歴史的にビューではありませんでしたが、現在は変更されています。


mysql> show create table COLUMNS \G
*************************** 1. row ***************************
表示:列
ビューの作成:CREATE ALGORITHM = UNDEFINED DEFINER = `mysql.infoschema` @` localhost`

これは、information_schemaでのパフォーマンスを助けるために行われるように見えますが、クエリごとの一時テーブルの作成を削除してinformation_schemaにします。

ドキュメントの第14章でこれについて深く掘り下げて説明します。詳細は以下のURLを参照してください。
また、前述のデータディクショナリは、アトミックデータ定義言語(DDL)文またはアトミックDDLを持つことができます。


新しいMySQL 8.0インスタンスへのレプリケーションを設定する前にクエリを確認しないと、これはいくつかのトランザクションを呼び起こす可能性があります。 テーブルメンテナンスの取り扱いにどのような影響が及ぶかという理由で、私はそれを言います。 "If Exists"というクリーンなクエリを書くと、大きな問題にはなりません。 全体的に、データとロールバックのオプションを保護する、より多くのトランザクションベースの機能です。


リソース管理は非常に興味深く見えます.MySQL 8.0の新機能であるため、これに重点を置くためにはもっと時間をかけなければなりません。 全体的にグループを割り当て、クエリの優先度を設定する必要はなく、クエリの振る舞いやリソースの割り当て方法をグループ化することができます。

mysql> select @@version;
+------------+
| @@バージョン|
+ ------------ +
| 5.7.16-log |
+ ------------ +
1行セット(0.00秒)

mysql> desc INFORMATION_SCHEMA.RESOURCE_GROUPS;
ERROR 1109(42S02):information_schemaの 'RESOURCE_GROUPS'テーブルが不明です

mysql> select @@ version;
+ -------------- +
| @@バージョン|
+ -------------- +
| 8.0.4-rc-log |
+ -------------- +
1行セット(0.00秒)

mysql> desc INFORMATION_SCHEMA.RESOURCE_GROUPS;
+ ------------------------ + ----------------------- + ------ + ----- + --------- + ------- +
| フィールド| タイプ| Null | キー| デフォルト| 余分な|
+ ------------------------ + ----------------------- + ------ + ----- + --------- + ------- +
| RESOURCE_GROUP_NAME | varchar(64)| NO | | NULL | |
| RESOURCE_GROUP_TYPE | 列挙型( 'SYSTEM'、 'USER')| NO | | NULL | |
| RESOURCE_GROUP_ENABLED | tinyint(1)| NO | | NULL | |
| VCPU_IDS | ブロブ| はい | NULL | |
| THREAD_PRIORITY | int(11)| NO | | NULL | |
+ ------------------------ + ----------------------- + ------ + ----- + --------- + ------- +
5行セット(0.00秒)


InnoDBバッファプールのキャッシュに関する詳細は、現在使用可能なインデックスに関するものです。

mysql> desc INFORMATION_SCHEMA.INNODB_CACHED_INDEXES ;
+----------------+---------------------+------+-----+---------+-------+
| フィールド| タイプ| Null | キー| デフォルト| 余分な|
+ ---------------- + --------------------- + ------ + --- - + --------- + ------- +
| SPACE_ID | int(11)unsigned | NO | | | |
| INDEX_ID | bigint(21)署名なし| NO | | | |
| N_CACHED_PAGES | bigint(21)署名なし| NO | | | |
+ ---------------- + --------------------- + ------ + --- - + --------- + ------- +
3行セット(0.01秒)


InnoDBバッファプールを設定する方法が不明な場合は、log_sizesまたはflushメソッドを使用して、使用可能なメモリに基づいてMySQLを設定します。

innodb_dedicated_server

[mysqld]
innodb-dedicated-server=1

mysql> select @@ innodb_dedicated_server;
+ --------------------------- +
| | @ innodb_dedicated_server |
+ --------------------------- +
| 1 |
+ --------------------------- +

この単純なテストでは、innodb_buffer_pool_sizeを6GBに設定しています(デフォルトは128MBです)。

数多くのJSONの追加と、正規表現の変更が行われました。 どちらも有望です。

このリリース自体のレプリケーションの強化は、コンパクトバイナリ形式を使用したJSONドキュメントの部分的な更新のバイナリログをサポートするようになりました。

しかし、全体的に多くの機能が利用できます( ここではそのすべてを読むことができます )。そのうちの1つ(クライアントが明日持っていたがっています)は、チャネルごとの複製ファイルです。
私のテストインスタンスはすでにバイナリログを有効にしていましたが、デフォルトではTABLEとファイルベースのマスター&スレーブ情報がデフォルトでオンになっています。

全体的に、これはこのリリースでの最初の一見とそれに対する非常に高いレベルの考えであり、他にも多くの変更が存在することに留意してください。 このリリースに関する他のブログ投稿や、 マニュアルリリースノートを見ることも役立ちます。 管理、セキュリティ、レプリケーションの観点から非常に有望であるように見えるので、確かにダウンロードしてレビューしてください。

2018年3月14日水曜日

MySQLのチートシート

だから私はいつか私がすべきだと思ったように投稿した。 私はまだMySQLと関連するフォークと一緒に働いていてとても忙しく、私が思うようにブログを出していませんでした。 だから、私はそれに取り組むでしょう。 

先日、私はそれが一般的なVIチートシートリストだったので、私が愛していたウェブサイトを思い出しました。 あなたが知っている構文、あなたはそれが必要であることを知っていますが、それが正しいまで3回タイプします。 それはあなたがそれを見て右に入力されると、私はすでにそれを書いたと思った。 

だから私は、一般的なMySQLコマンドの単純なリストではなく、毎月50回タイプするか、手の後ろのように知っているべきですが、クライアントが私たちの肩を見ているときを忘れてしまいます。 
まずは.. 
私たちは新しいMySQL 5.7.6+サーバを設定し、ログインします。 
パスワードを変更する必要があります。 しかし、それはパスを設定しないでユーザーを変更することです。 
パスワードをそのままクリアテキストで読む方法を知りたい。 

ALTER USER 
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass'; 
パスワードを設定する 
SET PASSWORD FOR 'bob''@'localhost' = PASSWORD('cleartext password'); 

パージバイナリログ 
PURGE BINARY LOGS TO 'mysql-bin.010';
PURGE BINARY LOGS BEFORE '2008-04-02 00:00:00
PURGE BINARY LOGS BEFORE NOW() - interval 3 DAY;

MySQLダンプ 
# COMPACT WILL REMOVE DROP STATEMENTS
mysqldump --events --master-data=2 --routines --triggers --compact --all-databases > db.sql
mysqldump --events --master-data=2 --routines --triggers --all-databases > NAME.sql
mysqldump --opt --routines --triggers dbname > dbname.sql
mysqldump --opt --routines --triggers --no-create-info joomla jforms > dataonly.sql 

外部キーを一瞬オフにする 
SET GLOBAL foreign_key_checks=0; 



助成金をスキップする 
/usr/bin/mysqld_safe --defaults-file=/etc/mysql/my.cnf --skip-grant-tables
vi /etc/mysql/my.cnf
[mysqld]
skip-grant-tables


BinLogのレビュー 
--base64-output = DECODE-ROWS&--verbose 
mysqlbinlog --defaults-file=/home/anothermysqldba/.my.cnf --base64-output=DECODE-ROWS --verbose binlog.005862 > 005862.sql

MYSQLの安全なクライアント 
mysql_config_editor print --all
mysql_config_editor set --user=mysql --password --login-path=localhost --host=localhost
mysql --login-path=localhost -e 'SELECT NOW()';

スワップ 
sudo swapoff -a
To set the new value to 10: echo 10 | sudo tee /proc/sys/vm/swappiness
sudo swapon -a 

情報スキーマが遅い場合 
set global innodb_stats_on_metadata=0; 

AWS変数 
CALL mysql.rds_show_configuration;
> call mysql.rds_set_configuration('binlog retention hours', 24);
> call mysql.rds_set_configuration('slow_launch_time', 2);

列名が入っているテーブルを見つける 
SELECT TABLE_SCHEMA , TABLE_NAME , COLUMN_NAME FROM information_schema.COLUMNS WHERE COLUMN_NAME = 'fieldname' ; 
クライアントはTableAにあると言っていますが、50のデータベースがあります。 
SELECT TABLE_SCHEMA , TABLE_NAME FROM information_schema.TABLES WHERE TABLE_NAME = 'TableA' ; 

奴隷労働者を調整する 
Select @@slave_parallel_workers;
Stop Slave; Set GLOBAL slave_parallel_workers=5; Start Slave;

MySQLマルチ 
5.6>
To start both : mysqld_multi start 1,2
To check on status of both: mysqld_multi report 1,2
To check on status or other options you can use just one

5.7<
[mysqld1] BECOMES [mysqld@mysqld1]
systemctl start mysqld@mysqld1
systemctl start mysqld@mysqld2
systemctl start mysqld@mysqld3
systemctl start mysqld@mysqld4 
MySQLアップグレードシステムテーブルのみ 
mysql_upgrade --defaults-file=/home/ anothermysqldba /.my.cnf --upgrade-system-tables 

スキップ・レプリケーション・エラー 
STOP SLAVE; SET GLOBAL sql_slave_skip_counter =1; START SLAVE; SELECT SLEEP(1); SHOW SLAVE STATUS\G 

2017年10月14日土曜日

MySQL InnoDBテーブルスペース暗号化

MySQL Tablespace暗号化は設定が比較的簡単です。 MySQL 5.7、innodb_file_per_tableを使用する必要があります 


MySQLのドキュメントには、これを設定するために必要なものすべてが含まれています。 


しかし、リンクを共有しただけでは私のブログ投稿は非常に短くなります。 そう.... 

アップグレード後、MySQL 5.7では、キーファイルの有効な場所が必要です。 私はMySQLのdatadirを/ var / lib / mysql / dataとして持っています。これにより、必要に応じてデフォルトの場所を見つけることができますが、必要に応じてさらに多くのディスクを簡単にマウントできます。 これにより、/ var / lib / mysqlがすでに許可されているため、selinuxなどの追加編集を行う必要もありません。 

/ var / lib / mysql / keyringをタッチする 
chmod 750 / var / lib / mysql / keyring * 
chown mysql:mysql / var / lib / mysql / keyring 

mysql .cnfファイルを編集します。 

ls /usr/lib64/mysql/plugin/keyring_file.so 
/usr/lib64/mysql/plugin/keyring_file.so 

[mysqld] 
#Keyring Pluginのインストール 
early-plugin-load = keyring_file.so 
keyring_file_data = / var / lib / mysql / keyring 

MySQLの起動後にあなたのプラグインをチェックしてください: 

mysql> SELECT PLUGIN_NAME、PLUGIN_STATUS 
- >情報シチェラから 
- > WHERE PLUGIN_NAME LIKE 'キーリング%'; 
+ -------------- + --------------- + 
| PLUGIN_NAME | PLUGIN_STATUS | 
+ -------------- + --------------- + 
| keyring_file | アクティブ| 
| keyring_udf | アクティブ| 
+ -------------- + --------------- + 


プラグインをインストールするkeyring_udf SONAME 'keyring_udf.so'; 
CREATE FUNCTION keyring_key_generate RETURNS INTEGER SONAME 'keyring_udf.so'; 
CREATE FUNCTION keyring_key_fetchストリングSONAMEを戻します 'keyring_udf.so'; 
CREATE FUNCTION keyring_key_length_fetch INTEGER SONAMEを戻します。 'keyring_udf.so'; 
CREATE FUNCTION keyring_key_type_fetchストリングSONAMEを戻します 'keyring_udf.so'; 
CREATE FUNCTION keyring_key_store戻り値INTEGER SONAME 'keyring_udf.so'; 
CREATE FUNCTION keyring_key_remove RETURNS INTEGER SONAME 'keyring_udf.so'; 


mysql>テストを使用する。 
mysql> SELECT keyring_key_generate( 'MyKey1'、 'AES'、32); 

mysql> CREATE TABLE `enc_test`( 
`enc_test_id` varchar(255)NOT NULL、 
PRIMARY KEY( `enc_test_id`) 
)ENGINE = InnoDB; 

mysql>テーブルを変更するtest.enc_test encryption = 'Y'; 

mysql> show create table enc_test \ G 
**************************** 1.行******************** ******* 
テーブル:enc_test 
テーブルの作成:CREATE TABLE `enc_test`( 
`enc_test_id` varchar(255)NOT NULL、 
PRIMARY KEY( `enc_test_id`) 
)ENGINE = InnoDB DEFAULT CHARSET = latin1 ENCRYPTION = 'Y' 
1行セット(0.00秒) 

2016年4月22日金曜日

MySQLで数学

The Original post: http://anothermysqldba.blogspot.com/2016/04/math-with-mysql.html


私はまあ...私はずっと前にこの投稿を思いました....

我々は、すべての数学はすべての生命の基本的な側面ではなく、超えた場合は世界中で使用される共通言語であることを知っています。 MySQLは、すべてのデータベースのように、数学の多くの側面であなたを助けることができます。

ここでは関数のリストは、次のとおりです。 https://dev.mysql.com/doc/refman/5.6/en/mathematical-functions.html

ここでは、始めるためにいくつかの簡単な例です。
  • 二次式の斧^ 2 + bxの+ C = 0

# 2x^2 – 4x – 3 = 0.
SET @a= 1;
SET @b= 3;
SET @c= -4;
SET @XX = ( -(@b) - SQRT( POW(@b,2) -4 * @a * @c) / POW(@a,2) ) ;
SET @YY = ( -(@b) + SQRT( POW(@b,2) -4 * @a * @c) / POW(@a,2) ) ;
SET @XXX = MOD(@YY, @XX);

SELECT @XX / @XXX as X;
+------+
| X |
+------+
| -4 |
+------+
SELECT @YY / @XXX as X ;
+------+
| X |
+------+
| 1 |
+------+

  • ピタゴラスの定理(ジオメトリ101を覚えておいてください)​​:A ^ 2 + B ^ 2 = C ^ 2

SET @A = 14;
SET @B = 48;
SELECT @C := SQRT(POW(@A,2) + POW(@B,2) );
+-------------------------------------+
| @C := SQRT(POW(@A,2) + POW(@B,2) ) |
+-------------------------------------+
| 50 |
+-------------------------------------+


だから、Cを解決し、もちろんあなたにものために解決するためにこれを使用します。

SELECT @A := SQRT(POW(@C,2) - POW(@B,2)) ;
+-----------------------------------+
| @A := SQRT(POW(@C,2) - POW(@B,2)) |
+-----------------------------------+
| 14 |
+-----------------------------------+


  • 対数とそのアイデンティティは、xy =ログX +ログyとログ
http://www.businessinsider.com/the-17-equations-that-changed-the-world-2012-7#the-logarithm-and-its-identities-2


SET @X = 2;
SET @Y = 3;
SELECT concat(log(@X * @Y) ,' = ', log(@X) + log(@Y) ) as "logarithm and its identities" ;
+---------------------------------------+
| logarithm and its identities |
+---------------------------------------+
| 1.791759469228055 = 1.791759469228055 |
+---------------------------------------+

  • 多面体のためのオイラーの公式:F - E + V = 2
http://www.businessinsider.com/the-17-equations-that-changed-the-world-2012-7#eulers-formula-for-polyhedra-6

SET @V = 4; # Vertices
SET @E = 6; # Edges
SET @F = 4; # Faces
SELECT @V - @E + @F as Tetrahedron;

SET @V = 8; # Vertices
SET @E = 12; # Edges
SET @F = 6; # Faces
SELECT @V - @E + @F as Hexahedron;

SET @V = 12; # Vertices
SET @E = 30; # Edges
SET @F = 20; # Faces
SELECT @V - @E + @F as Icosahedron;

SET @V = 12; # Vertices
SET @E = 30; # Edges
SET @F = 20; # Faces
SELECT @V - @E + @F as Icosahedron;

  • 相対性理論Eのアインシュタインの理論= MC ^ 2

SET @lbs = 190; # lbs
SET @lb2gram = 453.6; # 1 lbs = 453.6g
SET @lbstograms := @lbs * @lb2gram / 1;
SET @m := @lbstograms * 1 / 1000;
SET @c := POW(3.00 * POW(10,8), 2 );
SELECT @E := @m * @c ;
+----------------+
| @E := @m * @c |
+----------------+
| 7.75656e18 |
+----------------+

  • 1 = 0.9999 .....

SELECT SUM(.9/(9/10));
+----------------+
| SUM(.9/(9/10)) |
+----------------+
| 1.00000 |
+----------------+

2015年7月26日日曜日

MySQLのクイックパスワード生成

Original post http://anothermysqldba.blogspot.com/2015/07/quick-password-generation-with-mysql.html

ここではMySQLを使用して、パスワード、あなたのアプリケーションを生成するために迅速かつ簡単な方法です。 
このクエリは、長さと値の大文字と小文字ランダムに生成されたパスワードを作成します。 


SELECT CONCAT(UCASE(SUBSTRING( SUBSTRING(MD5(RAND()), FLOOR( 1 + (RAND() * 5)) , FLOOR( 8 + (RAND() * 15 )) ) , FLOOR( 1 + (RAND() * 4 )) , FLOOR( 4 + (RAND() * 12 )) )), 
SUBSTRING('!@#$%^&*', FLOOR( 1 + (RAND() * 4)) , FLOOR( 1 + (RAND() * 8)) ), 
SUBSTRING( SUBSTRING(MD5(RAND()), FLOOR( 1 + (RAND() * 5)) , FLOOR( 8 + (RAND() * 15 )) ) , 5)) as password \G 


それは一部の記号を追加すると、適用後、後半このクエリでは、MD5は自動的にそれを行うために、残りは小文字である動的パスワードの最初の部分と上ケースそれのためのランダムな値になります。 もちろん、あなたが好むものは何でもシンボル調整することができます。 

結果の一例: 

CREATE TABLE `generated` ( 
`password` varchar(255) NOT NULL 
) ENGINE=InnoDB ; 

MariaDB [(none)]> INSERT INTO test.generated SELECT CONCAT(UCASE(SUBSTRING( SUBSTRING(MD5(RAND()), FLOOR( 1 + (RAND() * 5)) , FLOOR( 8 + (RAND() * 15 )) ) , FLOOR( 1 + (RAND() * 4 )) , FLOOR( 4 + (RAND() * 12 )) )), SUBSTRING('!@#$%^&*', FLOOR( 1 + (RAND() * 4)) , FLOOR( 1 + (RAND() * 8)) ),SUBSTRING( SUBSTRING(MD5(RAND()), FLOOR( 1 + (RAND() * 5)) , FLOOR( 8 + (RAND() * 15 )) ) , 5)) as password; 

MariaDB [(none)]> select * from test.generated; 
+-----------------------------------+ 
| password | 
+-----------------------------------+ 
| 7232E1D9$%^&*f7de22c1b14f15c8a6 | 
| DEE22B7F7#$%541adcdd1b8e2 | 
| 2C4BB81001@#$%^&d0d9a2126 | 
| 941D3B92D@#$%^a4b7be92 | 
| 1CF2563254FC@#a79bb5 | 
| 2AE86E7D6!@#$%^&*4ca03f2e8 | 
| 074DD8D3#$e70a1 | 
| B2DDC!@#$%^47a252f79 | 
| 3A6D0A#$%^&*01ce9278a2a | 
| E9FB4CD16E19!739db9faa1616505c | 
| 1ED7A2E1379B4!@#$%ebe60b | 
| E9B57D71DB1@#$%^e9a4f8c2e94bf3d35 | 
| C97982!@#$8b5c534653c06 | 
| DE8998057C8!@#$%^8977a807 | 
| 7C7172EB1AE5$%^&*79d2b27 | 
| B52CE71@#$%^&*4508 | 
| AB17714F!@#$%^&203ba4ff80f8a6 | 
| 558D@#$04087871e29ff54 | 
| 27A78E8EF#$%^b8cee8628d81593 | 
| 315F2EC4#ad9913ec0595c | 
+-----------------------------------+