LinuxMySQLPHP

PHP7 MySql error Uncaught Error: Call to undefined function mysql_real_escape_string()

1 Mins read

PHP7の環境へPHP5系のアプリを移動してみたら案の定動かん。。。

モジュール調べたら「mysql_」系が無くなってて「mysqli_」に代わっているのみたいなのでソース内をgrepして片っ端から直したらなんとか動いた♪

mysql_

から

mysqli_

へ「i」つける!

「mysql_select_db」や「mysql_query」は「i」付けるだけではなく、引数の順番も変わっているから念のため、関連する部分は見直しが必要です。

このタイミングで出来ればオブジェクト指向系に変更することをおススメします。
「mysqli::query」感じ!

あと、なんかunset($this)も使えんようになってたみたい。

時代は進むんだぁ

Read more
LinuxMySQL日記

mysqldumpでバックアップ mysqlで復元

1 Mins read

MySqlのバックアップと復元について

CentOS 6.9 x64
MariaDB 10.1.25(xampp linux x64 5.6.31内)

最近xampp内にあるのはMariaDBとなっていますが。。。オープンソースが分かれた感じね。これ昔のSybaseとSQLServerと同じやつだ(汗)MySqlがOracleに買収されて相変わらずオープンソースだけどライセンス系でめんどくさいから分けちゃえってやつ。そういえばUnixとLinuxもそんな感じだよね。アメリカ人(Linuxは欧米かぁ)は昔からライセンスの緩いVS固いで戦ってるけど、こちらは使ってて名前違うのに、中身はほぼ一緒なの、なんで?って疑問、若い人に教えるの大変なんだよなぁ。そういえばOpenSSLも確かオープンソース団体の脆弱性修正が遅すぎるってGoogleが別プロジェクト作っちゃったのこの前見た。。。

まえがきはさておき、xamppや複数のMySqlを1台で運用(あまりやらんが使用ポートを分ければ複数インスト可能)するときに「sock」指定(プロセス指定)が必要なのでその部分も含めてコマンド書いときます。

yum使ってMySqlを標準インストールした場合、Pathが普通に切られているから、他のネット情報のように「sock」部分はカットして使ってください。

■バックアップ(使い勝手がよいのでバイナリでアウトプット)
# ./mysqldump --default-character-set=binary --socket=/opt/lampp/var/mysql/mysql.sock -u root -p dbname > /opt/dump.sql

■復元
# ./mysql --socket=/opt/lampp/var/mysql/mysql.sock -u root -p dbname < /opt/dump.sql

Read more
LinuxMySQLPHP日記

PHP5.4 PDO Connection Windows7で遅い

1 Mins read

気づいたら、1年ぶりの更新だった(汗)

さてさて、開発環境のLAMPを最新版にバージョンアップしてみたら、
PDO経由でのMySQLへのアクセスが遅い遅い、従来の10倍ぐらい時間がかかっている!!!

調べてみたら、PDOのConnectionで遅い。。。。はて?

環境は以下
旧:Apache2.2,MySQL5.1,PHP5.2
新:Apache2.4,MySQL5.5,PHP5.4

どうやら、接続時の文字列を「localhost」にしていたのだが、DNSの名前解決で遅延しているらしい、これを「127.0.0.1」とIP指定してあげたらもとの速度に戻った。

ググるとVista,Win7,Win8で起きるらしい

なんでだ。。。hostにも「localhost 127.0.0.1」と設定したのにダメ

ネットワークのIP6も使用禁止にしたのに

本当の解決方法を知りたい。

Read more
ApacheLinuxMySQL

Redmine 1.3 Subversion 1.6.11 連携 Basic認証エラー mod_auth_mysql

1 Mins read

環境、CentOS6.2、Apache2.2.15、Redmine1.3、Subversion1.6.11、Mysql5.5.20

Redmine1.3を使用しRedmineのユーザーをWebBasic認証(mod_auth_mysql)とリンクさせて使用する際にエラーとなったので覚書しとく

基本的に上位アプリは正しくセットアップされて単独で動く状態からの処理となる

原因はRedmine1.2よりパスワード保持方法が変更となった、この変更にmod_auth_mysqlがついていけないことが原因。(SHA1+saltとなった)

1.mod_auth_mysqlのソースをここからDownload

2.Mysql5.0系用のpacheをDownし「1」のソースファイル当てる

3.Redmineで使用している認証方法をここからDownし「2」のソースファイル当てる

これでソースのある下位層まで「cd」してコンパイル開始Go!

/usr/sbin/apxs -ci -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient -lz -lm mod_auth_mysql.c

・・・

「make_scrambled_password error」となりコンパイルが通らない・・・

どうやら「make_scrambled_password」用のシンボリックリンクが見つからないらしい、Mysqlのソースを追加すれば行けそうだけど、そもそも「make_scrambled_password」を使用する気はないので、コメントアウトとする。

make_scrambled_password関連個所のソースをコメントにし、再度コンパイル・・・

無事に「mod_auth_mysql.so」完成!

使ってみる・・・OKそう

AuthMySQLEnable On
AuthMySQLSocket /var/lib/mysql/mysql.sock
AuthMySQLHost [DB Host名]
AuthMySQLUser [DB接続User名]
AuthMySQLPassword [DB接続PW]
AuthMySQLDB [接続DB名]
AuthMySQLUserTable [確認Table名]
AuthMySQLNameField [確認IDフィールド名]
AuthMySQLPasswordField [確認PWフィールド名]
AuthMySQLSaltField salt
AuthMySQLPwEncryption sha1-rm
AuthMySQLNoPasswd Off
#AuthMySQLCharacterSet UTF-8
 
#AuthGroupFile /dev/null
AuthType Basic
AuthName "Authorization SVN"
Require valid-user

編集ソースとコンパイル後のファイルを置いておきますが、何が起こっても自己責任でお願いしますね。

Read more
MySQL

DB Designer 4でMySQLに接続できない?

1 Mins read

最近は便利なツールが沢山ありますね!
昔はセコセコとExcelに書き出していたものを・・・・

っと思い出にフケってないで本題です(苦笑)

DB設計&運用&作成&既存システムの解析するときに仕様書としてER図などを作成しますが、DB自体からリバースエンジニアリングし、お手軽に作成してしまおう!ってのが最近の流行りだと思います・・・・が(私だけ?)

ってことでMySQL用に作成してあり、仕様をある程度合わせて作られているツールを探したところDB Designer 4が見つかりました!

いざDownしてMySQL5.1と接続したら・・・・・「ID,Passが違う!」と接続できない?

はて?

ググル・・・

どうやら、MySQL4.1以降のパスワードハッシュ方法変更の影響を受けているらしい?

セキュリティレベルは落ちるが開発環境なので旧ハッシュにしてあげる
 

-- hoge@localhost = ID@Host
-- hogepass = パスワード
 set password for hoge@localhost = OLD_PASSWORD('hogepass');

これで行けるようになった(笑)

ちなみに最新プロジェクトは「DB Designer Fork」と言う名前になっているらしい?こちらは英語版だが新ハッシュ方法のID,PassもOKだったよ。

Dataフォルダ内のファイルを差し替えれば、ある程度は日本語表示になる。

また、最近はMySQL Workbenchってのがあるが、ほしい機能は有料版なり・・・

P.S 「A5:SQL Mk-2」というフリーのSQL開発ツールも良いです。(作者様、感謝!)

Read more