ラベル mysql の投稿を表示しています。 すべての投稿を表示
ラベル mysql の投稿を表示しています。 すべての投稿を表示

2018年10月21日日曜日

mysql select結果をcsvファイルに書き出す

2018 Oct. 21.


csvファイル書き出し

ユーザにfile権限を付与する

        $ mysql -u root -p DATABASE

        mysql> grant file on *.* to 'USER'@'localhost' ;

当該ユーザー でmysqlに接続してファイル出力する

$ mysql -u USER -p DATABASE

(カンマ区切り、二重引用符囲みで/var/lib/mysql-files/ディレクトリに出力)
    --secure-file-priv が設定された状態であれば
     SELECT @@secure_file_priv; を実行し
     出力表示されたディレクトリにCSVファイルを保存するようにする。

mysql> select * from TABLE WHERE CONDITION INTO OUTFILE "/var/lib/mysql-files/TEXTFILENAME" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY "\n";

(列名を先頭行につけて出力)
mysql> select 'col1','col2', ... union select * from TABLE WHERE CONDITION INTO OUTFILE "/var/lib/mysql-files/TEXTFILENAME" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY "\n";
     
書き込み先はmysqlユーザが書き込み権限のあるディレクトリでないと
いけない。
    /tmpディレクトリが無難。
    書込先ファイルの上書きはできない。ので、同名ファイルは削除しておく。

Output csv-file for standard-output.(二重引用符囲み無し。カンマ区切り)
$ mysql -u USER --password='PASSWORD' -e "SELECT *  from TABLE" DATABASE | sed -e 's/\t/,/g' > outfile.csv

(sample)
$ mysql --user epgrec --password='PASSWORD' -e 'SELECT path,starttime,title,description,type,channel from Recorder_reserveTbl where complete = 1 and dirty = 0 order by starttime desc' epgrec | sed -e 's/\t/,/g' > ~/video_list.csv


  sql結果のファイル出力

  $ mysql --user epgrec --password='epgrec106' epgrec > OUTFILE
  SQL文の入力待ちになったところで
  select path from Recorder_reserveTbl order by path asc ;
  \q
  と入力するとファイルが作成される。

2018年10月20日土曜日

mysql ファイル書き込みディレクトリ制約の解除

2018 Oct. 20.

https://qiita.com/bohebohechan/items/207e87786b1e30f60abe より

概要

secure-file-priv に設定されたディレクトリのみに書き込みができる。
secure-file-privの設定がNULLであれば書き込み制約されない。
書き込み属性が、mysqlユーザーを許可するディレクトリであること。

secure-file-privの確認

mysql> SELECT @@global.secure_file_priv;
 

secure-file-privの設定

/etc/mysql/conf.d/my.cnfを編集し、mysqlサーバーを再起動する。

(/etc/my.cnfでのNULL設定)
 [mysqld]
secure-file-priv = ""
 
 
 

2018年10月8日月曜日

mysql パスワードポリシー変更/無効化

2019 Oct. 21.
2018 Oct. 21.
2018 Oct. 08.

永続的変更(こちらで運用中)

mysqlサーバー設定ファイル *.cnf を編集する[mysqld] validate_password_policy=LOW  上記を設定するとmysqlサーバーの起動に失敗するので、下記とした。 rootでmysqlに接続し、下記コマンドでvalidate_passwordプラグインを削除し、mysqlサーバーを再起動する mysql> uninstall plugin validate_password;

一時的変更(mysqlサーバーを再起動すると設定が消える)

 $ mysql -p -u root

(設定確認) 
mysql> SHOW VARIABLES LIKE 'validate_password%';

(ポリシー変更) 
 mysql> set global validate_password_policy=LOW;
 

2018年9月15日土曜日

2018年9月13日木曜日

ubuntu + nginx + mysql + php インストール

2018 Sep. 15.
2018 Sep. 13.


https://beautifulajax.dip.jp/?p=1825 より

関連ソフトインストール

# apt install nginx mysql-server
# systemctl start nginx
# apt install php php-fpm php-mysql php-gettext php-common php-mbstring php-mbstring

php設定

/etc/php/7.2/fpm/php.ini を編集する

  cgi.fix_pathinfo=0

/etc/php/7.2/fpm/pool.d/www.conf を編集する
  php_admin_value[memory_limit] = 128M

# service php7.2-fpm restart

nginx設定

 /etc/nginx/sites-available/default を編集する
  server {
  }
  の中に、下記を書き込む。

   # ディレクトリ内のファイル一覧を表示する場合
   autoindex on;

   location ~ \.php$ {
          try_files $uri =404;
          fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
          fastcgi_index index.php;
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          include fastcgi_params;
   }



confファイルを編集する
 fastcgi_param PHP_VALUE "memory_limit = 128M";

 次の1行の内容の/var/www/html/phpinfo.phpファイルを作成する
  <?php phpinfo(); ?>


nginx起動

# systemctl restart nginx

http://NGINX-SERVER/xxx
"xxx" にでたらめな文字列を入れてhttp://NGINX-SERVERにアクセスし、nginxから404 Not Foundが送られてくることを確認する


404 Not Found


nginx/1.14.0 (Ubuntu)


http://NGINX-SERVER/phpinfo.php にアクセスしてphpinfo画面が表示されることを確認する 


mysqlインストール

http://rokkonet.blogspot.com/2018/09/mysql.html 




2018年9月9日日曜日

mysql ユーザー@ホストの確認

2018 Oct. 21.
2018 Sep. 09.

mysql> user mysql
mysql> select  host,user from mysql.user;

2018年9月4日火曜日

2018年9月2日日曜日

mysqlインストール

2019 Nov. 02.
2019 Oct. 14.
2019 Jan. 03.
2019 Jan. 02.
2018 Nov. 18.
2018 Sep. 15.
2018 Sep. 02.

インストール

# apt install mysql-server
続いて
# mysql_secure_installation
  質問にはすべて "y" でよい。

"$ mysql -p -u root" でログインできるようにする


"$ mysql -p -u root" でログインできない状態となっている。
"$ sudo mysql -p -u root" ならログインできる。
  
"$ mysql -p -u root" でログインできるようにする
( https://note.mu/junf/n/na40fbca9e6ea )
 
  $ sudo mysql -u root -p
  mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'PASSWORD';
  mysql> FLUSH PRIVILEGES; 
  別のターミナルを開いて sudo 無しでログインできるか確認する


利用文字コードをutf8にする。

/etc/mysql/conf.d/ に拡張子を".cnf"とする任意なファイル名で次の設定を記述

あるいは

 ~/.my.cnf に記述


  [client]
  # default-character-set = utf8 (設定すると日本語入力できない)

  [mysqld]
  character-set-server=utf8
    # default-character-set = utf8 ではmysqlが起動しない

  [mysqldump]
  default-character-set = utf8

  [mysql]
  # default-character-set = utf8 (設定すると日本語入力できない)

 

  確認

( www.jifu-labo.net/2015/09/ubuntu_epgrecuna/ より)
$ mysql -u root -p
   文字コードの設定に問題がないか確認。
   set_filesystemとsets_dir以外が全てutf8ならば問題ない。
  mysql> show variables like "char%";
  +--------------------------+----------------------------+
  | Variable_name            | Value                      |
  +--------------------------+----------------------------+
  | character_set_client     | utf8                       |
  | character_set_connection | utf8                       |
  | character_set_database   | utf8                       |
  | character_set_filesystem | binary                     |
  | character_set_results    | utf8                       |
  | character_set_server     | utf8                       |
  | character_set_system     | utf8                       |
  | character_sets_dir       | /usr/share/mysql/charsets/ |
  +--------------------------+----------------------------+
  8 rows in set (0.01 sec)


 EPGREC用設定

sql-modeの指定をしない(strict制約をしない)。sql_mode=''
・書き出し先ディレクトリ制約をしない。secure-file-priv = ""

[mysqld]
sql_mode=''
secure-file-priv = ""



ネットワーク(127.0.0.1 を含む)からのアクセスを許可する

/etc/mysql/ 内の設定ファイルに
skip-networking
の行があれば削除もしくはコメント化する。

外部からのにアクセスを許可する場合

アクセス許可するIPアドレス設定(bind-address = 0.0.0.0)

/etc/mysql.conf.d/mysqld.cnf の "bind-address = xxx.xxx.xxx.xxx" を修正する。
 すべてのIPアドレスからのアスセスを許可 ->  bind-address = 0.0.0.0
 localhostからのアクセスのみを許可 -> bind-address =127.0.0.1
 bind-addressを複数行記述すると最終行のみが有効。
 1行に、スペース区切りで複数アドレスを記述すると最初のアドレスのみが有効。
 "xxx.xxx.xxx." "xxx.xxx.xxx.0/24" "xxx.xxx.xxx.0/255.255.255.0" といった記述はできない。


/etc/hosts.allow 設定


  mysqld: ALL  (すべてのIPアドレスからのアクセスを許可)
  mysqld: 127.0.0.1  (localhostからのアクセスを許可)
  mysqld: 192.168.1.  (192.168.1/24からのアクセスを許可)

3306ポート開放

# ufw enable
# ufw allow 3306/tcp
# ufw allow 3306/udp

3306ポートをLISTENしているのを確認する。
$ netstat -na | grep 3306
$ mysql -h 127.0.0.1 -P 3306 -u root -p
 

PC shutdown時にmysqlが終了しない現象を防ぐ(ubuntu15.04以降)


システムシャットダウン時にmysqlを手動で止める?
# systemctl stop mysql.service && systemctl disable mysql.service


以下の対策では再発した。
shutdown時に"A stop job is running for MySQL Community Server" と表示され10分間停止してしまう現象への対処

( askubuntu.com/questions/615129/systemd-mysql-wont-stop より)
# chgrp mysql /etc/mysql/debian.cnf
# chmod 640 /etc/mysql/debian.cnf
# cp /lib/systemd/system/mysql.service /etc/systemd/system/
# chmod 755 /etc/systemd/system/mysql.service

/etc/systemd/system/mysql.service を編集する。
  [Service]セクションに次の行を書き込む。
    ExecStop=/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf shutdown

変更をsystemdに登録する。
  # systemctl daemon-reload

以下の対策はxubuntu16.04では改善されなかった。
( askubuntu.com/questions/615129/systemd-mysql-wont-stop より)
# cat /etc/mysql/debian.cnf
    password = xxxxx を確認する。

$ mysql -u root -p

mysql> GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'xxxxx' ;
mysql> flush privileges;

以下の対策はxubuntu16.04では改善されなかった。
  # cp /lib/systemd/system/mysql.service /etc/systemd/system/
  # chmod 755 /etc/systemd/system/mysql.service

2017年4月5日水曜日

mysql 各種使い方

2019 Oct. 21.
2019 Jan. 03.
2018 Dec. 31.
2018 Oct. 21.
2018 Aug. 26.
2017 Nov. 23.
2017 Apr. 05.


テキストファイルからの入力

    LOAD DATA INFILE "ファイル名" INTO TABLE テーブル名 FIELDS TERMINATED BY ',(区切り文字)' ENCLOSED BY '"' ( 引用符で囲まれるカラム, .. ) ;


      入力ファイルにおいて数値は二重引用符に囲まれていなくてよい。
      strict-modeに STRICT_TRANS_TABLES または STRICT_ALL_TABLES がセットされていると
      入出力のカラム数が一致しない場合エラーとなる。

    mysql> load data infile "20150822diary.csv" into table diary fields terminated by ',' enclosed by '"' ( date, note, sunrise, sunset, weather, highest_temparature, lowest_temparature, weight, money, people_met, place_visited, about_family, time_awoke, time_sleep_yesterday, note2 ) ;

    mysql> load data infile "20150906postgresql-meibo.csv" into table people fields terminated by ',' enclosed by '"' ( name,kana,kankei1, kankei2, keisyo,heiki_name,heiki_keisyo,mail_adr,job,renrakusaki,bikou,phone_keitai,genjusyo_postal,genjusyo1,genjusyo2,genjusyo_phone,nenga_postal,nengajusyo1,nengajusyo2,nenga_phone ) ;

  postgresqlからcsvファイル経由でデータコンバートする場合は全データを二重引用符で囲み、booleanデータは0/1(整数)に変換しておく

    mysql> load data infile "20150909people.csv" into table people fields terminated by ',' enclosed by '"' ( name,kana,kankei1, kankei2, keisyo,heiki_name,heiki_keisyo,mail_adr,job,renrakusaki,bikou,phone_keitai,genjusyo_postal,genjusyo1,genjusyo2,genjusyo_phone,nenga_postal,nengajusyo1,nengajusyo2,nenga_phone,isneednenga,issendnenga2000,isgetnenga2000,issendnenga2001, isgetnenga2001,issendnenga2002, isgetnenga2002,issendnenga2003, isgetnenga2003,issendnenga2004, isgetnenga2004,issendnenga2005, isgetnenga2005,issendnenga2006, isgetnenga2006,issendnenga2007, isgetnenga2007,issendnenga2008, isgetnenga2008,issendnenga2009, isgetnenga2009,issendnenga2010, isgetnenga2010,issendnenga2011, isgetnenga2011,ismochu2012,issendnenga2012, isgetnenga2012,ismochu2013,issendnenga2013, isgetnenga2013,ismochu2014,issendnenga2014,isgetnenga2014,ismochu2015,issendnenga2015, isgetnenga2015 ) ;



csvファイルからの読み込み

        LOAD DATA INFILE "ファイル名" INTO TABLE テーブル名 FIELDS TERMINATED BY

 ',(区切り文字)' ENCLOSED BY '"' ( 引用符で囲まれるカラム, .. ) ;

      入力ファイルにおいて数値は二重引用符に囲まれていなくてよい。
      strict-modeに STRICT_TRANS_TABLES または STRICT_ALL_TABLES がセットされていると入出力のカラム数が一致しない場合エラーとなる。

    mysql> load data infile "20150822diary.csv" into table diary fields terminated by ',' enclosed by '"' ( date, note, sunrise, sunset, weather, highest_temparature, lowest_temparature, weight, money, people_met, place_visited, about_family, time_awoke, time_sleep_yesterday, note2 ) ;

    mysql> load data infile "20150906postgresql-meibo.csv" into table people fields terminated by ',' enclosed by '"' ( name,kana,kankei1, kankei2, keisyo,heiki_name,heiki_keisyo,mail_adr,job,renrakusaki,bikou,phone_keitai,genjusyo_postal,genjusyo1,genjusyo2,genjusyo_phone,nenga_postal,nengajusyo1,nengajusyo2,nenga_phone ) ;

 postgresqlからcsvファイル経由でデータコンバートする場合は全データを二重引用符で囲み、booleanデータは0/1(整数)に変換しておく
    mysql> load data infile "20150909people.csv" into table people fields terminated by ',' enclosed by '"' ( name,kana,kankei1, kankei2, keisyo,heiki_name,heiki_keisyo,mail_adr,job,renrakusaki,bikou,phone_keitai,genjusyo_postal,genjusyo1,genjusyo2,genjusyo_phone,nenga_postal,nengajusyo1,nengajusyo2,nenga_phone,isneednenga,issendnenga2000,isgetnenga2000,issendnenga2001, isgetnenga2001,issendnenga2002, isgetnenga2002,issendnenga2003, isgetnenga2003,issendnenga2004, isgetnenga2004,issendnenga2005,  isgetnenga2005,issendnenga2006, isgetnenga2006,issendnenga2007, isgetnenga2007,issendnenga2008, isgetnenga2008,issendnenga2009, isgetnenga2009,issendnenga2010, isgetnenga2010,issendnenga2011, isgetnenga2011,ismochu2012, issendnenga2012, isgetnenga2012,ismochu2013,issendnenga2013, isgetnenga2013,ism、ochu2014,issendnenga2014,isgetnenga2014,ismochu2015, issendnenga2015, isgetnenga2015 ) ;


テキストファイルに出力する。

    ユーザにfile権限を付与する。
        $ mysql -p -u root DBNAME

        mysql> grant file on *.* to USER@localhost ;

        mysql> exit

    $ mysql -p -u USERNAME DBNAME

    (カンマ区切り、二重引用符囲みで/var/lib/mysql-files/ディレクトリに出力)
        --secure-file-privが設定された状態であれば
            SELECT @@secure_file_priv; を実行し
            出力表示されたディレクトリにCSVファイルを保存するようにする。

    mysql> select * from TABLE WHERE CONDITION INTO OUTFILE "/var/lib/mysql-files/TEXTFILENAME" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY "\n";

    (列名を先頭行につけて出力)
    mysql> select 'col1','col2', ... union select * from TABLE WHERE CONDITION INTO OUTFILE "/var/lib/mysql-files/TEXTFILENAME" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY "\n";
   
        書き込み先はmysqlユーザが書き込み権限のあるディレクトリでないといけない。
        /tmpディレクトリが無難。
        書込先ファイルの上書きはできないので、同名ファイルは削除しておく。

Output csv-file for standard-output.(二重引用符囲み無し。カンマ区切り)
  $ mysql -u USER -p -e "SELECT *  from TABLE" DATABASE | sed -e 's/\t/,/g' > outfile.csv

    (sample)
    $ mysql --user epgrec -p -e 'SELECT path,starttime,title,description,type,channel from Recorder_reserveTbl where complete = 1 and dirty = 0 order by starttime desc' epgrec | sed -e 's/\t/,/g' > ~/video_list.csv

sql結果のファイル出力

  $ mysql -p -u epgrec epgrec > OUTFILE
  SQL文の入力待ちになったところで
  select path from Recorder_reserveTbl order by path asc ;
  \q
  と入力するとファイルが作成される。




データバックアップ リストア

    全データ

        バックアップ
            $ mysqldump -u root -p -x --all-databases > FILE
     
        リストア
            $ mysql -u root -p < FILE


    データベース単位

        バックアップ
            $ mysqldump -u USER -p DB > FILE

        リストア
   データベース作成
    mysqlコマンド起動後、インタラクティブに
    $ mysql -u root -p
    mysql> create database DB ;


    mysql> create database DB default character set utf8 default collate utf8_general_ci; (文字コード、文字照合順を指定する例)
   ユーザーの作成
    mysql> grant all on DB.* to USER@"%" identified by 'PASSWORD' ;
mysql> exit

   リストア
    $ mysql -u USER -p DB < FILE


    テーブル単位(複数テーブルを指定可能)

        mysqldump -u USER -p DB TABLE1 TABLE2 > FILE

    /var/lib/mysqのコピーによるバックアップ
        # service mysql stop
        # rsync -av /var/lib/mysql BACKUP-DIR/
        # service mysql restart

 /var/lib/mysqのコピーによるバックアップ

        # service mysql stop
        # rsync -av /var/lib/mysql BACKUP-DIR/
        # service mysql restart


別のテーブルの値でデータ更新

テーブルmeiboのbikouの値を、id値が一致するpeopleテーブルのbikouにセットする例
  update people, meibo set people.bikou = meibo.bikou where people.id = meibo.id ;


MySQL 5.0の文字コード設定

    以下の内容で、/etc/mysql/conf.d/に character_set.cnfというファイル

    [client]
    default-character-set = utf8

    [mysqld]
    default-character-set = utf8
    "skip-character-set-client-handshake"は無い方がよいらしい

    [mysqldump]
    default-character-set = utf8

    [mysql]
    default-character-set = utf8

my.cnf / my.iniの設定

  skip-networking
    設定されている場合オフにする。

  port
    デフォルト値は3306


/etc/hosts.allow

  許可  mysqld: ALL
        mysqld: 192.168.1.
        mysqld: 127.0.0.1


外部ホストに対しmysqlのポート3306を開く

  # ufw enable
  # ufw allow 3306/tcp
  # ufw allow 3306/udp

  そのポートでLISTENとなっていることの確認
    $ netstat -na | grep 3306
       
    $ telnet -h xxx.xxx.xxx.xxx -P 3306

 TCP/IPソケット有効確認

      $ mysql -h 127.0.0.1 -P 3306 -u root -p

mysql 外部ホストからのアクセス許可/不許可

外部からの接続を制限するには、GRANTコマンドでユーザ毎に指定する。

  /etc/mysql/my.confの "bind-address = xxx.xxx.xxx.xxx"
  外部からのアクセスを許可するには、"bind-address = 0.0.0.0"の1行だけを記載する。
  localhostだけのアクセスを許可するには、"bind-address = 127.0.0.1"の1行だけを記載する。

     "bind-address = xxx.xxx.xxx.xxx" は、
    「サーバが複数の IPアドレスを持っている場合に、特定のアドレスでしか
    待ち受けないようにする」オプション。
    複数行書かれていると、最後の行のみが有効。
    1行に、スペース区切りで複数アドレスが書かれていると、最初のアドレスが有効。
    bind-address行記載が無ければ、サーバーが持っている全てのIPアドレスで待ち受ける。(localhostと192.168.xxx.xxxとか)
    "bind-address = 0.0.0.0" でも、サーバーが持っている全てのIPアドレスで待ち受ける。

GRANTコマンドによるユーザ登録と外部アクセス制御

    mysql> grant all privileges on DBNAME.* to USER@"xxx.xxx.xxx.xxx" identified by 'パスワード' with grant option;
    mysql> flush privileges;

    mysql> grant all privileges on DBNAME.* to USER@"HOST" identified by 'パスワード' with grant option;
    mysql> flush privileges;

    すべてのホストから接続できるようにする
      mysql> grant all privileges on DBNAME.* to USER@"%" identified by 'パスワード' with grant option;
      mysql> flush privileges;

    192.168.1.0/24からの接続を許可する。
      mysql> grant all privileges on DBNAME.* to USER@"192.168.1.%" identified by 'パスワード' with grant option;
      mysql> flush privileges;
   
    example.comからの接続を許可する。
      mysql> grant all privileges on DBNAME.* to USER@"example.com" identified by 'パスワード' with grant option;
      mysql> flush privileges;
     
    全データベースへのアクセスを許可する。
      mysql> grant all privileges on *.* to USER@"example.com" identified by 'パスワード' with grant option;
      mysql> flush privileges;

Strict mode(カラムに不正な値を入れた場合に警告ではなくエラーを返す)の

有効化(ENUM型でリスト外の値をエラーにする)

    debian/ubuntu
        /etc/mysql/my.cnfの[mysqld]セクション内に
        sql_mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
        の1行を記載する。
 

mysqlのユーザー一覧

    $ mysql -p -u root mysql
    mysql>  select user,host from user;

 文字セットと照合順序を指定したデータベース作成

  mysql> CREATE DATABASE DBNAME DEFAULT CHARACTER SET utf8 collate utf8_unicode_ci ;

    collate(照合順序)とは、文字を比較(一致/不一致や表示順)する際のルール。
    mysqlのデフォルトcollateであるutf8_general_ciでは、大文字-小文字を同一視するが、
    utf8_unicode_ciでは、さらに半角-全角も同一視する。

データベースのデフォルト文字コードの設定

    ALTER DATABASE dbname default character set=utf8;


データベース利用開始、データベース選択、テーブル確認

  $ mysql -p -u USER DATABASE
  mysql> SHOW DATABASES;
  mysql> use DATABASENAME;
  mysql> SHOW TABLES;
  mysql> show full columns from TABLE ;

 テーブルの構造を表示

show columns from TABLENAME;

tableの全カラム名取得

    mysql> SHOW COLUMNS FROM TABLE;

    $ mysql -u user -p -Ns -e "DESC table" database | cut -f 1
      -N 結果のヘッダーを非表示にする
      -s mysql特有の枠を非表示にする
 

Epgrecの Recorder_reserveTblテーブルのprogram_idに関し、値が連続していない行(program_id + 1 のprogram_id値が存在しない行)をselectする

    select program_id from Recorder_reserveTbl R1 where ( select count(*) from Recorder_reserveTbl R2 where R2.program_id = R1.program_id + 1 ) = 0 order by program_id;



カラムに連続番号が自動で入力される設定

  1,データ型は「int」型などの整数型を設定する
  2,「auto_increment」を付ける
  3,一意に設定する
      「primary key」に
     
  例)create table renban(a int auto_increment primary key,b varchar(10));
      insert into renban (b) values ('あ');

  自動連続カラムには自動で値が入るので、データ入力時にはこのカラムを無視してよい。



テーブル作成例
mysql> CREATE TABLE diary ( id INTEGER UNSIGNED not null auto_increment primary key, date DATE NOT NULL, note text, sunrise TIME,   sunset TIME,   weather text, highest_temparature INTEGER,   lowest_temparature INTEGER, weight FLOAT UNSIGNED,   money integer,   people_met text,   place_visited text,   about_family text,   time_awoke time, time_sleep_yesterday time, note2 text, index(id));

mysql> CREATE TABLE people ( id INTEGER UNSIGNED not null auto_increment primary key, name text, kana text, kankei1 text, kankei2 text, keisyo text, heiki_name text, heiki_keisyo text, mail_adr text, job text, renrakusaki text,bikou text,phone_keitai text,genjusyo_postal VARCHAR(14), genjusyo1 VARCHAR(80),genjusyo2 VARCHAR(72),genjusyo_phone text,nenga_postal VARCHAR(14),nengajusyo1 VARCHAR(80),nengajusyo2 VARCHAR(72),nenga_phone text,isneednenga boolean DEFAULT false CHECK(isneednenga > -1 AND isneednenga < 2 ), issendnenga2000 boolean DEFAULT false CHECK(issendnenga2000 > -1 AND issendnenga2000 < 2 ), isgetnenga2000 boolean DEFAULT false CHECK(isgetnenga2000 > -1 AND isgetnenga2000 < 2 ),issendnenga2001 boolean DEFAULT false CHECK(issendnenga2001 > -1 AND issendnenga2001 < 2 ), isgetnenga2001 boolean DEFAULT false CHECK(isgetnenga2001 > -1 AND isgetnenga2001 < 2 ),issendnenga2002 boolean DEFAULT false CHECK(issendnenga2002 > -1 AND issendnenga2002 < 2 ), isgetnenga2002 boolean DEFAULT false CHECK(isgetnenga2002 > -1 AND isgetnenga2002 < 2 ),issendnenga2003 boolean DEFAULT false CHECK(issendnenga2003 > -1 AND issendnenga2003 < 2 ), isgetnenga2003 boolean DEFAULT false CHECK(isgetnenga2003 > -1 AND isgetnenga2003 < 2 ),issendnenga2004 boolean DEFAULT false CHECK(issendnenga2004 > -1 AND issendnenga2004 < 2 ), isgetnenga2004 boolean DEFAULT false CHECK(isgetnenga2004 > -1 AND isgetnenga2004 < 2 ),issendnenga2005 boolean DEFAULT false CHECK(issendnenga2005 > -1 AND issendnenga2005 < 2 ), isgetnenga2005 boolean DEFAULT false CHECK(isgetnenga2005 > -1 AND isgetnenga2005 < 2 ),issendnenga2006 boolean DEFAULT false CHECK(issendnenga2006 > -1 AND issendnenga2006 < 2 ), isgetnenga2006 boolean DEFAULT false CHECK(isgetnenga2006 > -1 AND isgetnenga2006 < 2 ),issendnenga2007 boolean DEFAULT false CHECK(issendnenga2007 > -1 AND issendnenga2007 < 2 ), isgetnenga2007 boolean DEFAULT false CHECK(isgetnenga2007 > -1 AND isgetnenga2007 < 2 ),issendnenga2008 boolean DEFAULT false CHECK(issendnenga2008 > -1 AND issendnenga2008 < 2 ), isgetnenga2008 boolean DEFAULT false CHECK(isgetnenga2008 > -1 AND isgetnenga2008 < 2 ),issendnenga2009 boolean DEFAULT false CHECK(issendnenga2009 > -1 AND issendnenga2009 < 2 ), isgetnenga2009 boolean DEFAULT false CHECK(isgetnenga2009 > -1 AND isgetnenga2009 < 2 ),issendnenga2010 boolean DEFAULT false CHECK(issendnenga2010 > -1 AND issendnenga2010 < 2 ), isgetnenga2010 boolean DEFAULT false CHECK(isgetnenga2010 > -1 AND isgetnenga2010 < 2 ),issendnenga2011 boolean DEFAULT false CHECK(issendnenga2011 > -1 AND issendnenga2011 < 2 ), isgetnenga2011 boolean DEFAULT false CHECK(isgetnenga2011 > -1 AND isgetnenga2011 < 2 ),ismochu2012 boolean DEFAULT false CHECK(ismochu2012 > -1 AND ismochu2012 < 2 ),issendnenga2012 boolean DEFAULT false CHECK(issendnenga2012 > -1 AND issendnenga2012 < 2 ), isgetnenga2012 boolean DEFAULT false CHECK(isgetnenga2012 > -1 AND isgetnenga2012 < 2 ),ismochu2013 boolean DEFAULT false CHECK(ismochu2013 > -1 AND ismochu2013 < 2 ),issendnenga2013 boolean DEFAULT false CHECK(issendnenga2013 > -1 AND issendnenga2013 < 2 ), isgetnenga2013 boolean DEFAULT false CHECK(isgetnenga2013 > -1 AND isgetnenga2013 < 2 ),ismochu2014 boolean DEFAULT false CHECK(ismochu2014 > -1 AND ismochu2014 < 2 ),issendnenga2014 boolean DEFAULT false CHECK(issendnenga2014 > -1 AND issendnenga2014 < 2 ), isgetnenga2014 boolean DEFAULT false CHECK(isgetnenga2014 > -1 AND isgetnenga2014 < 2 ),ismochu2015 boolean DEFAULT false CHECK(ismochu2015 > -1 AND ismochu2015 < 2 ),issendnenga2015 boolean DEFAULT false CHECK(issendnenga2015 > -1 AND issendnenga2015 < 2 ), isgetnenga2015 boolean DEFAULT false CHECK(isgetnenga2015 > -1 AND isgetnenga2015 < 2 ),ismochu2016 boolean DEFAULT false CHECK(ismochu2016 > -1 AND ismochu2016 < 2 ),issendnenga2016 boolean DEFAULT false CHECK(issendnenga2016 > -1 AND issendnenga2016 < 2 ), isgetnenga2016 boolean DEFAULT false CHECK(isgetnenga2016 > -1 AND isgetnenga2016 < 2 ),index(id));

mysql> CREATE TABLE people ( id INTEGER UNSIGNED not null auto_increment primary key, name text, kana text, kankei1 text, kankei2 text, keisyo text, heiki_name text, heiki_keisyo text, mail_adr text, job text, renrakusaki text,bikou text,phone_keitai text,genjusyo_postal VARCHAR(14), genjusyo1 VARCHAR(80),genjusyo2 VARCHAR(72),genjusyo_phone text,nenga_postal VARCHAR(14),nengajusyo1 VARCHAR(80),nengajusyo2 VARCHAR(72),nenga_phone text,isneednenga boolean  , issendnenga2000 boolean  , isgetnenga2000 boolean  ,issendnenga2001 boolean  , isgetnenga2001 boolean  ,issendnenga2002 boolean  , isgetnenga2002 boolean  ,issendnenga2003 boolean  , isgetnenga2003 boolean  ,issendnenga2004 boolean  , isgetnenga2004 boolean  ,issendnenga2005 boolean  , isgetnenga2005 boolean  ,issendnenga2006 boolean  , isgetnenga2006 boolean  ,issendnenga2007 boolean  , isgetnenga2007 boolean  ,issendnenga2008 boolean  , isgetnenga2008 boolean  ,issendnenga2009 boolean  , isgetnenga2009 boolean  ,issendnenga2010 boolean  , isgetnenga2010 boolean  ,issendnenga2011 boolean  , isgetnenga2011 boolean  ,ismochu2012 boolean  ,issendnenga2012 boolean  , isgetnenga2012 boolean  ,ismochu2013 boolean  ,issendnenga2013 boolean  , isgetnenga2013 boolean  ,ismochu2014 boolean  ,issendnenga2014 boolean  , isgetnenga2014 boolean  ,ismochu2015 boolean  ,issendnenga2015 boolean  , isgetnenga2015 boolean  ,ismochu2016 boolean  ,issendnenga2016 boolean  , isgetnenga2016 boolean  ,index(id)) ;