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

2024年7月4日木曜日

MySQL プライマリキーのインクリメントをリセットする

MySQLでは、以下の手順でincrementを1に初期化できます。

MySQLのDBに接続して以下のalterコマンドを実行します。


$ use <データベース名>;

$ alter table <テーブル名> auto_increment = 1;


auto_increment = 10にすると、10から始まります。


参考 Djangoノウハウ集【データベース操作編】
https://sinyblog.com/django/knowledge/


2019年10月31日木曜日

CentOS7 Mattermost 日本語全文検索設定

たてた Mattermost で 日本語全文検索 を可能にする - アレコレ・ティプス
http://asuki-yt.hatenablog.jp/entry/2018/04/03/200000

2019.10.31 現在、上記サイトの方法でできた。ありがとうございます。
CentOS7
MariaDB 10.1.30
Mattermost 5.16.1

私はMariaDB(MySQL)の設定については
/etc/my.conf に記述した。

2019年9月19日木曜日

Django 突然MySQLにログインできなくなった

Djangoが急に動かなくなったので調べると、MySQLでログインできない...というようなエラーが出ていた。
パスワードも変えていないのに、なぜだろうかと思ったが、どうもよくあるエラー?のようだった。

Windowsだったので以下を参考にしてパスワードリセットして解決しました。ありがとうございます。

MySQLのrootパスワードを忘れた!ってときの対処法(Windows) - Qiita
https://qiita.com/Nekonecode/items/c44896105f1c2b22630e

2019年6月21日金曜日

Django: DBをMySQLに変更する - pymysqlではなくmysqlclientを使う

実行日: 2019-06-21
Python: 3.7
Django: 2.1
MySQL: 5.7
OS: Windows10

DjangoのDBをMySQLに変更しようとネットで調べると、多くの記事では、
・PyMySQLをインストールしろ($ pip install PyMySQL)
・manage.py に import pymysqlとpymysql.install_as_MySQLdb()を記述しろ
とあるのですが、PyMySQLのバージョンが古いとのエラーになってしまいました。

以下を参考にすると、MySQL接続には PyMySQL ではなく mysqlclient  をデフォルトで使えとのことでした。

Django: エラー解決法 "raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; 〜)

$ pip uninstall pymysql ← pymysqlを削除しておく
$ pip install mysqlclient ←mysqlclientをインストール

※manage.pyには何も追記する必要はなし


基本作業は以下となります。

1.MySQLを公式サイトからダウンロードしてインストールする。
2.MySQLにパスを通す。(参考: https://webkaru.net/mysql/windows-confirmation/
3.settings.pyのDATABASEを以下のように編集する。

1
2
3
4
5
6
7
8
9
10
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'sample',  # データベース名
        'USER': 'rootuser',  # ユーザ名
        'PASSWORD': 'ZZZ',  # パスワード
        'HOST': '127.0.0.1',  # MySQLがあるサーバのIPアドレスやホストを。空欄はローカルホスト
        'PORT': '3306',  # 空欄はデフォルトポートの3306
    }
}

4.MySQLコマンドプロンプトでDBを作成する。
mysql> CREATE DATABASE sample;
※settings.pyで設定したNAMEと同じ名前のDBを作成

5.$ python manage.py migrate を実行する。

以上です。

2019年4月9日火曜日

phpMyAdminのインストール

【CentOS7】phpMyAdminのインストール – ysklog
http://ysklog.net/server/4475.html

EPELリポジトリの追加
# yum -y install epel-release

phpMyAdminのインストール
# yum -y install --enablerepo=epel install -y phpMyAdmin php-mysql php-mcrypt

さらに、インストールしたphpMyAdminにはアクセス制限がかかっているため、
自分のIPアドレスをアクセス許可にする必要があります。
# nano /etc/httpd/conf.d/phpMyAdmin.conf

<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require ip 127.0.0.1 ***.***.***.*** 
Require ip ::1
</RequireAny>
</IfModule>

上記赤色部分に、自分のIPアドレスを入力して保存します。

Aapcheを再起動します。
# systemctl restart httpd.service


に接続すればOKです。


2019年3月28日木曜日

mysqlでの50音順ソート(濁音・半濁音など) 以下の様なテーブル… - 人力検索はてな

http://q.hatena.ne.jp/1410397790


COLLATE 節を使うと、以下のように書けます。

SELECT kana
    FROM table_name
    ORDER BY kana COLLATE utf8_unicode_ci;

COLLATE 節についての、MySQL のマニュアルは、こちらです。

ただ、質問に書いてある内容だけではなくて、「シ」と「ジ」だけではなく「し」や「じ」も順序が同一視されます。

もし、カタカナの読みしか入らない、というカラムだったら、COLLATE utf8_unicode_ci が使えると思います。

2018年10月17日水曜日

MySQL テーブル定義書を生成する

<?xml version="1.0" encoding="utf8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:s="http://sqlfairy.sourceforge.net/sqlfairy.xml">
<xsl:output method="html" encoding="utf8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"/>

<xsl:template match="database">
<html lang="ja">
<head>
<meta charset="utf-8"/>
<title>テーブル定義</title>
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"/>
<style>
table.htable {
margin: 3em auto 1em auto !important;
}
table.htable th {
border-left: 10px solid #e5e5e5 !important;
}
footer {
border-top: 1px solid #e5e5e5;
padding: 0.5em;
}
</style>
</head>

<body>
<div class="container">
<h1 class="page-header">テーブル定義</h1>
<xsl:apply-templates select="table_structure"/>
</div>
<footer class="text-center">
your company
</footer>
</body>
</html>
</xsl:template>

<xsl:template match="table_structure">
<table class="table table-bordered htable">
<tbody>
<tr class="active">
<th>テーブル名</th>
<td>
<xsl:value-of select="options/@Comment"/>
</td>
</tr>
<tr class="active">
<th>スキーマ</th>
<td><xsl:value-of select="@name"/></td>
</tr>
</tbody>
</table>
<table class="table table-condensed">
<thead>
<tr>
<th class="text-right">#</th>
<th>論理名</th>
<th>物理名</th>
<th>型</th>
<th>NULL</th>
<th>デフォルト値</th>
<th>主キー</th>
<th>ユニーク</th>
</tr>
</thead>
<tbody>
<xsl:apply-templates select="field"/>
</tbody>
</table>
</xsl:template>

<xsl:template match="field">
<tr>
<td class="text-right"><xsl:value-of select="position()"/></td>
<td><xsl:value-of select="@Comment"/></td>
<td><xsl:value-of select="@Field"/></td>
<td><xsl:value-of select="@Type"/></td>
<td><xsl:if test="@Null='YES'"><span class="glyphicon glyphicon-ok"></span></xsl:if></td>
<td><xsl:value-of select="@Default"/></td>
<td><xsl:if test="@Key='PRI'"><span class="glyphicon glyphicon-ok"></span></xsl:if></td>
<td><xsl:if test="@Key='UNI'"><span class="glyphicon glyphicon-ok"></span></xsl:if></td>
</tr>
</xsl:template>

</xsl:stylesheet>

続・MySQL データベースからテーブル定義書を生成する - 私と私の猫の他は誰でも隠し事を持っている
http://mariyudu.hatenablog.com/entry/2015/02/01/200517

上記を参考に以下のコマンドで作成します。

1.sample_dbから定義書sample_dbを生成
$ mysqldump -u username -p --no-data --xml sample_db > sample_db.xml

2.style.xslでxmlファイルをhtmlに変換
$ xsltproc -o sample_db.html style.xsl sample_db.xml


データベース名:samble_db
テーブル定義書:samble_db.xml
スタイルシート:style.xsl
最終出力:sample_db.hmtl


2018年8月18日土曜日

CentOS7/DockerでCentOS6/Apache2.2環境の構築

古いCentOS6環境が必要になったので、CentOS7上のDocker内にCentOS6/Apache2.2環境を構築してみた。
以下参考にさせていただきました。

やってみよう!DockerでWordPress構築~httpd/mysql設定と外部アクセスまで | GMOクラウドアカデミー
https://academy.gmocloud.com/advance/20160118/1557

あと、php-gdも入れておくとよいです。
$ yum install php-gd

そしてphpファイルが実行できないときは、以下を参考

apacheとphpを入れた環境でphpが動作せずにソースコードのまま表示される時
https://qiita.com/nnmr/items/f8d6453829ce3341d51c


※注意点
Ctrl + P → Ctrl + Qはバックグラウンドでコンテナを起動したまま抜ける。
exitを実行した場合は、コンテナの終了となり、コンテナ内に構築したものがすべてパーになるので、以下のようにコンテナに名前をつけてイメージを保存しておくこと。

$ sudo docker commit {Container ID} centos6:apache


Dockerイメージとコンテナの削除方法

https://qiita.com/tifa2chan/items/e9aa408244687a63a0ae


ファイルのコピー

ローカルからコンテナへ
docker cp [オプション] ローカル・パス|- コンテナ:パス

例: docker cp /tmp/local_file.php container_test1:/tmp/local_copy_file.php

コピー先にファイルを指定しない場合には新しく作成されます。

コンテナからローカルへ
docker cp [オプション] コンテナ:パス ローカル・パス|-

例: docker cp container_test1:/tmp/container_file.php /tmp/container_copy_file.php


FTPサーバーのインストール

CentOS 6 : FTPサーバー インストールと設定 : Server World
https://www.server-world.info/query?os=CentOS_6&p=ftp



Dockerで複数個のポートフォワーディングを行う

例: docker run -p 80:80 -p 443:443 d2b1a9e25105

例: docker run -d -p 20-21:20-21 -p 65500-65515:65500-65515 -v /tmp:/var/ftp:ro metabrainz/docker-anon-ftp


iptables がエラー(Could not load ...modules...)の場合

--privileged を付けて起動すること
例: docker run -it --privileged -p 8080:80 --name apache centos6:centos /bin/bash

CentOS6のiptablesについて

ファイアウォールiptablesを簡単解説~初心者でもよくわかる!VPSによるWebサーバー運用講座(4) | さくらのナレッジ
https://knowledge.sakura.ad.jp/4048/

2018年8月12日日曜日

php環境構築時に入れ忘れないように

php環境構築時に入れ忘れてコケるやーつ…。
https://qiita.com/sango/items/a86f9b8cf8c9c641823a



php-mbstring
mb_convert_encodingとか、マルチバイト文字列関連の関数を使うときに必要
インストール
# yum -y install php-mbstring


php-mysqli
mysqliクラスを利用するときに必要
インストール
# yum -y install php-mysqli


共にインストールしたら有効化のためにhttpdを再起動
# systemctl restart httpd.service


2018年8月9日木曜日

MySQL管理方法

サイボウズ版 MySQL パフォーマンスチューニングとその結果 - Cybozu Inside Out | サイボウズエンジニアのブログ
http://blog.cybozu.io/entry/2018/08/08/080000

2018年7月24日火曜日

さくらVPSサーバを契約した後の初期設定の方法 | NEZU.log

https://blog.nzakr.com/vps-setting/

さくらVPSサーバを契約した後の初期設定の方法

ブログのサーバをレンタルサーバからVPSサーバに移転したので、今回はVPSサーバの初期設定を紹介します。VPSサーバは何も設定されていないので、全て自分でセットアップする必要があります。
LAMP環境の構築、そしてWordpressのインストールまでの流れは別記事にして紹介します。

移転先のサーバは下記です。
さくらVPSサーバ 1G

VPSサーバはレンタルサーバと違いOSがインストールされているだけなので、様々な設定を自分でやる必要があります。基本的に作業はコマンドライン上で行います。Macでいうとターミナルですね。Windowsの場合はTeraTermなどのソフトウェアを利用します。

利用しているサーバがさくらVPSなので、さくらVPSで話がベースになりますが、基本的に作業内容は同じです。
なお、コマンドライン上でのファイルの編集はvi(vim)で行います。viはキーバインドがかなり独特なので、慣れるまではかなり使いにくいかもしれません。ファイルの一部書き換え程度のことしかしないので、下記使い方を見ながらやっていきましょう。

Mac de UNIX – UNIX入門-viエディタの使い方

【スポンサーリンク】

基本的な設定

まずは基本的な設定をしていきます。手順は以下ですね。

  • 1. サーバの起動
  • 2. rootのパスワードを変更
  • 3. ユーザーの作成とsudo権限付与
  • 4. コンソールの日本語化
  • 5. パスの設定

サーバの起動

VPSを契約したら、コントロールパネルにログインします。
契約時に入力したメールアドレス等に以下のような内容が届いていると思います。

URL : コントロールパネルのURL
IP : XXX.XXX.XXX.XXX
PASS : xxxxxxxxxxxxxxxxxx

コントロールパネルにログインしてサーバを起動しましょう。IPアドレスとパスワードでログインできると思います。
さくらVPSの場合は以下のような感じです。

起動したらSSHでログインします。ここからコマンドライン上で作業していきます。
まずはSSHのコマンドでログインしていきます。パスワードを求められるので、パスワードも入力しましょう。ちなみに、コマンドライン上でパスワードを入力する際は、文字はもちろん「***」も表示されません。

1ssh root@XXX.XXX.XXX.XXX

ログインに成功すると以下のような表示がでます。
SAKURA Internet [Virtual Private Server SERVICE]
※ さくらVPSの場合

rootのパスワードを変更

ログインしたらまずはrootのパスワードを変更しましょう。
初期パスワードのままはセキュリティ的にかなり危ないです。「passwd」というコマンドで変更できます。

1$ passwd
2Changing password for user root.
3New UNIX password: #新しいパスワード
4Retype new UNIX password: #確認用パスワード

ユーザーの作成とsudo権限付与

さて、rootのパスワードを変更しましたが、そもそもrootでログインすること自体がセキュリティ的によくないので、ログイン用のユーザーを作成します。

1$ useradd YYYYY
2$ passwd YYYYY

YYYYYはユーザー名なので自由に設定して下さい。ユーザーを作成したら、そのユーザーのパスワードを設定しましょう。今後はこちらのユーザーでログインしていきます。

作成したユーザーにsudo権限を付与します。sudoとは一時的にroot権限を得るためのコマンドです。システムに関するような重要ファイルの編集はrootしかできませんが、毎回rootユーザーを利用するのはセキュリティ的によくないので、sudoを通して実行するのが慣習です。
sudo権限を付与するには「wheel」というグループにユーザーを追加します。

1#wheelグループに追加
2$ usermod -G wheel YYYYY
3#追加されているかどうか確認 wheelがあればOK
4$ id YYYYY
5uid=500(YYYYY) gid=500(YYYYY) groups=500(YYYYY),10(wheel)

続いて、wheelグループがsudoコマンドを使えるようにします。
visudoコマンドでsudoの設定ファイルを開きます。

1$ visudo

開いたファイルの中の下記場所のコメントアウト「#」を消せばOKです。

1## Allows people in group wheel to run all commands
2#%wheel        ALL=(ALL)       ALL
3
4## Allows people in group wheel to run all commands
5%wheel        ALL=(ALL)       ALL

コンソールの日本語化

細かい設定に入る前にコンソールを日本語化しておきます。

1$ vi /etc/sysconfig/i18n
1#変更前
2LANG="C"
3SYSFONT="latarcyrheb-sun16"
4 
5#変更後
6LANG="ja_JP.UTF-8"
7SYSFONT="latarcyrheb-sun16"

これで、lsコマンド等でファイルを表示した時に一部情報が日本語になります。

パスの設定

初期設定の最後にパスの設定します。
コマンドは本来そのコマンドの設定ファイルが置かれている場所を含めてフルパスで実行するものなのですが、実行したい場所をPATHに設定しておくことで省略できるようになります。

「.bash_profile」を編集していきます。

1$ vi .bash_profile

下記内容を記述します。

1PATH=$PATH:$HOME/bin
2PATH=$PATH:/sbin
3PATH=$PATH:/usr/sbin
4PATH=$PATH:/usr/local/sbin

記述が完了したら保存して、設定内容を反映させます。

1$ source .bash_profile

ここまでの作業を終えたら、いったんサーバからログアウトしましょう。その後、さきほど作成したユーザーでログインしましょう。パスワードはユーザー作成時に設定したパスワードです。

ここまで設定したら、いったんログアウトして新規で作成したYYYYYユーザーで作業していきます。

1#rootをログアウト
2exit
1#新規で作成したユーザーでログイン
2ssh XXX.XXX.XXX.XXX -l YYYYY

セキュリティに関する設定

ひと通り基本的な設定が完了したら、セキュリティの設定をしていきます。
セキュリティの設定は最低限のことに絞ってやっていきます。

  • 1. SSHログインの設定
  • 2. iptablesの設定
  • 3. yumのアップデート

SSHログインの設定

まずはSSHでログインする際の設定をしていきます。
具体的にはポートの変更とrootログインの禁止設定です。
SSHの設定は「/etc/ssh/sshd_config」というファイルで管理されているので、このファイルをvi(vim)で編集します。

1sudo vim /etc/ssh/sshd_config

まずは、ポートを変更します。初期では22番のポートが指定されていますが、22ポートは初期値で攻撃対象になりやすいので、変更していきます。数値は「0 ~ 65535」で自由に選べます。
他でよく使う80(http)、443(https)、20(FTP)、21(FTP)、3306(Mysql)などは避けたほうが楽です。

1Port 22 #変更前
2Port XXXXX #変更後

続いて、rootでのログインをできないようにします。PermitRootLoginという項目が"yes"になっているので、noにします。

1#PermitRootLogin yes
2PermitRootLogin no

ここまで設定したら、下記コマンドでSSHを再起動します。

1sudo /etc/rc.d/init.d/sshd restart

・iptablesの設定

続いて、iptablesを設定していきます。
iptablesはlinuxのファイアウォール機能です。

設定方法はけっこう高度なので、さくらVPSの公式サイトを確認してやっていきます。
iptablesの設定方法

下記の通りにコマンドを実行していけばOKです。
rootユーザーで作業していない場合は、sudoをつけて実行していきます。

1#サーバへの攻撃対策
2sudo iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
3sudo iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
4sudo iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
5 
6#通信内容の制限
7sudo iptables -A INPUT -i lo -j ACCEPT
8sudo iptables -A INPUT -p icmp -j ACCEPT
9 
10#確立済みの通信を許可
11sudo iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
12 
13#パケットの設定
14sudo iptables -P INPUT DROP
15sudo iptables -P OUTPUT ACCEPT

ここまで実行したら、続いて利用するポートを指定していきます。
ひとまずhttp(80)、https(443)、ssh(XXXXX)の番号を指定していきましょう。
sshのポート番号については、この記事の最初に22番から変更した後の番号を入力します。

1#httpのポートを指定(80)
2sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
3#httpsのポートを指定(443)
4sudo iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
5#sshのポートを指定(XXXXX)
6sudo iptables -A INPUT -p tcp -m tcp --dport XXXXX -j ACCEPT

これでひとまずOKです。
設定を保存して再起動していきましょう。

1#設定を保存
2sudo service iptables save
3#再起動
4sudo service iptables restart

設定ファイル「/etc/sysconfig/iptables」を見てみると、下記のように記述されているかと思います。

1sudo vi /etc/sysconfig/iptables
2 
3*filter
4:INPUT DROP [0:0]
5:FORWARD ACCEPT [0:0]
6:OUTPUT ACCEPT [34:3560]
7-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
8-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
9-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
10-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
11-A INPUT -i lo -j ACCEPT
12-A INPUT -p icmp -j ACCEPT
13-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
14-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
15-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
16COMMIT

これでiptableの設定は完了です。
FTPやMysqlなど他にポート開放が必要になったら再度設定していきます。

yumのアップデート

最後にパッケージ管理のyumをアップデートしていきましょう。
サーバにいろいろな機能を入れていくのですが、その機能を一括で管理できるツールみたいなものです。

1sudo yum update

まとめ

ざーっと初期設定してみました。
公開鍵の設定などもできればしておきたいところですが、今回は省略しました。
コマンドラインになれていない人は「面倒!」と感じるかと思いますが、慣れていくとそうでもないです。

次回はVPSサーバ上にLAMP環境を構築してWordpressを導入していきます。

さくらVPSとWordpressに関する記事