インフラ/クラウド構築

Ubuntu16.04にMySQLをインストールする。

更新日:

MySQLのインストール

$ sudo apt install -y mysql-server libmysqlclient-dev

 

バージョンを確認する。

$ mysql --version

結果
mysql Ver 14.14 Distrib 5.7.19, for Linux (x86_64) using EditLine wrapper

MySQLをサービス起動・終了する

MySQLをサービス起動する

起動前に現在の状態を確認しておこう。

$ sudo service mysql status

Active: active (running) since 土 2017-10-21 11:56:19 JST; 11min ago

このようになっていれば正常起動できている。

$ sudo service mysql start

これで起動できる。

$ service mysql stop

これで終了できる。

終了している状態でstatusを見てみた。

Active: inactive (dead) since 土 2017-10-21 12:08:32 JST; 4s ago

データベースとユーザーの作成

mysqlにログインする

$ mysql -u ユーザー名 -p パスワード

初回はrootユーザーで入り、データベースやユーザーを作成する。

$ mysql -u root -p 

インストール時にrootユーザーのパスワードを設定している場合は、 -p オプションの後にパスワードを入力しよう。Ubuntuの場合はsudoコマンドで入る必要がある。

$ sudo mysql -u root -p

このように。

データベースを作成する create database DB名

mysql>create database データベース名 default character set 文字コード名;
mysql>create database pydev1 default character set utf8mb4; MySQLには歴史的経緯から文字コードUTF8には'utf8'と'utf8mb4'がある。 'utf8'では4バイト文字が扱えないケースがあるので、'utf8mb4'を指定しておけばOKだ。

ユーザーを作成する create user ユーザー名

mysql>create user ユーザー名@接続先 identified by パスワード
mysql>create user pydev1@localhost identified by 'pydev1pw'

テーブルを作成する

mysql>create table DB名.テーブル名 (カラム名 型,カラム名 型...);
mysql>create table pydev1.urls (url text,http_status_code varchar(3));

 

主キーをつけて作成

mysql>create table pydev1.urls (url varchar(100) NOT NULL PRIMARY KEY,http_status_code varchar(3));

主キーを後付けする

mysql> ALTER TABLE DB名.テーブル名 ADD PRIMARY KEY (カラム名,カラム名,カラム名);
mysql> ALTER TABLE pydev1.テーブル名 ADD PRIMARY KEY (url);

テーブルにカラムを追加する

mysql>ALTER TABLE DB名.テーブル名 ADD カラム名 型 AFTER どのカラムの後;
mysql>ALTER TABLE pydev1.urls ADD domain varchar(200) AFTER url;

テーブルのカラム情報を表示する

mysql>SHOW COLUMNS FROM DB名.テーブル名;
mysql>SHOW COLUMNS FROM pydev1.urls;

テーブル内容を全削除する

mysql> truncate table DB名.テーブル名;
mysql> truncate table pydev1.urls;

pythonからmysqlに接続する

mysqlclientが枯れていて安定しているが、oracle社公式クライアントのMySQL Connector/Pythonもある。

mysqlclientはpip管理されているので、pipでインストールしよう。

(pydev1) $ pip install mysqlclient

スクリプト内でのMySQLの接続

  1. mysqlクライアントを読み込む
    import MySQLdb
  2. コネクションを取得する。
    conn = MySQLdb.coonect(接続情報)
  3. コネクションからカーソルを取得する。
    cursor=conn.cursor()
  4. カーソルに対してSQL文を発行する。
    cousor.execute(任意のSQL文)
  5. コネクションにコミットする。
    conn.commit()
  6. コネクションを閉じる。
    conn.close()

MySQL-Pythonプログラミング時のエラー

_mysql_exceptions.OperationalError: (1044, "Access denied

_mysql_exceptions.OperationalError: (1044, "Access denied for user 'pydev1user'@'localhost' to database 'pydev1'")

原因:pydev1userがpydev1というDBに接続する権限がありません。権限を与えてあげる。

mysql>GRANT ALL ON pydev1.* TO pydev1user IDENTIFIED BY 'パスワード';

IDENTIFIED BY 'パスワード'がないとエラーになるので注意。

TypeError: Can't convert 'NoneType' object to str implicitly

implicitly 暗黙的に
NoneTypeはstr型に暗黙変換できないよ。

mysql_exceptions.IntegrityError: (1062, "Duplicate entry '値' for key 'PRIMARY'")

主キーが重複しています。
integiryt 高潔、誠実、清廉、完全な状態、無傷

NameError: name 'IntegrityError' is not defined

IntegrityErrorがcatchできないというエラー。

これでcatchできる。

from MySQLdb import IntegrityError

except IntegrityError:

_mysql_exceptions.ProgrammingError: not all arguments converted during string formatting

プログラミングエラー。SQLの書き方がおかしいです。
引数をバインドしている場合の、バインドのさせ方とかをチェックする。

MySQLの管理者コマンド一覧

データベースの一覧を表示する

mysql>show databases;

データベース内のテーブル一覧を表示する

mysql>SHOW TABLES FROM データベース名;

 

データベース内のユーザー一覧を表示する

mysql> select Host, User, Password from mysql.user;

 

ユーザーの権限を表示する

mysql>SHOW GRANTS for 'pydev1user'@'localhost';
GRANT USAGE ON *.* TO 'pydev1user'@'localhost'

 

 

USAGEは何の権限もないということ。

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

グローバルレベル:

mysql>GRANT 権限 ON *.* TO ユーザー@ホスト;
mysql>GRANT ALL ON *.* TO pydev1user@localhost;

データベースレベル:
mysql>GRANT 権限 ON db_name.* TO user;

テーブルレベル:
mysql>GRANT 権限 ON db_name.table_name TO user;

カラムレベル:
mysql>GRANT 権限 (カラム1, カラム2, ...) ON db_name.table_name TO user;

【転職のプロが薦める】Web系自社開発のための転職エージェントランキング!

 転職満足度は『「いかに自分の希望にあう、条件のよい」企業から内定が出たか』で決まります。そのため、Web系企業に転職するときのエージェントを選ぶポイントは、「Web系企業の求人」をいくつ持っているかに尽きます。なので、総合大手よりも、Web系企業の求人を多くもつIT専門転職エージェントがオススメです。

ギークリー

  • Web系企業の求人数は9000以上とダントツに多い。
  • 「リクナビNEXTエージェントNetwork」にて、「紹介求人案件満足度部門」「カウンセリング・対応満足度部門」で1位獲得!
  • 「営業が強い」という口コミが多いが、その分熱心に求人を提案してくれる。
  • 無料相談のWEB登録は、履歴書・職務経歴書不要で、たった60秒で超簡単
  • 無料相談は東京・神奈川・埼玉・千葉で勤務できるエンジニアが対象。

レバテックキャリア

  • Web系企業の求人数が4000以上と豊富
  • 「GOOD AGENT AWARD」で「2018年金賞」受賞!
  • 転職業界の人間同士の会話でも、ITといえばレバテックとまず挙がる。
  • 無料相談のWEB登録は、履歴書・職務経歴書不要で、たった60秒で超簡単
  • 無料相談は東京、千葉、埼玉、神奈川、大阪、兵庫、京都、福岡で勤務できるエンジニアが対象。

ワークポート

  • 求人数は2000以上と上2社より少ないが、古くからIT専門として有名。
  • 「GOOD AGENT RANKING」で「転職決定人数部門」第1位獲得!
  • 無料相談のWEB登録は、履歴書・職務経歴書不要で、たった60秒で超簡単

-インフラ/クラウド構築

Copyright© SIerからWeb系自社開発に転職!失敗して感じたたった1つの後悔 , 2019 All Rights Reserved.