【CentOS7】MySQL8のインストール

CentOS7からコマンドも大幅に変更になりましたが、
デフォルトのデーターベースもMySQLからMariaDBへ変更になりましたので、
CentOS7でMySQLを使いたい場合は6以前に比べ、一手間かかります。

MariaDBのアンインストール

MariaDBが入っている場合はアンインストール。
アンインストール
# yum -y remove mariadb-libs
# rm -rf /var/lib/mysql

MySQLのインストール

最新のリポジトリはこちらで確認。
https://dev.mysql.com/downloads/repo/yum/
2019年5月6日現在、mysql80-community-release-el7-3.noarch.rpm が最新の模様。
リポジトリの追加
# rpm -Uvh http://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
インストール
# yum -y install --enablerepo=mysql80-community mysql-community-server
バージョンの確認
# mysql --version mysql Ver 8.0.16 for Linux on x86_64 (MySQL Community Server - GPL)

MySQLの設定(2020/05/25修正)

MySQL8から文字コードはデフォルトで utf8なので特に設定する必要は無い様です。
とりあえず最低限の設定。
設定ファイルの修正
# vi /etc/my.cnf
# default-authentication-plugin=mysql_native_password

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
character-set-server = utf8 ←最終行へ追加

MySQLの起動

起動と自動起動設定
# systemctl start mysqld
# systemctl enable mysqld
rootのパスワードを確認
# grep 'temporary password' /var/log/mysqld.log
下記の様にrootのパスワードが表示される。

表示されたパスワードを記載してMySQLに接続。
-pの後のパスワードなど、記号などが含まれている文字を設定する際は、 ' (シングルクオーテーション)で囲う。
MySQLの接続
# mysql -uroot -p'h(&qAOAay60a'
こちらでも同じ。
# mysql -uroot -p Enter password: ←パスワード入力
rootユーザのパスワードを「1q2w3e4r」に変更しようとすると、
mysql> ALTER USER root@localhost IDENTIFIED BY '1q2w3e4r'; ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
となり、パスワードをもっと複雑にしろと怒られるので、今回はローカルの開発環境、テスト環境なので、条件をかなり緩和する。
パスワード設定の条件緩和
mysql> SET GLOBAL validate_password.length=4; Query OK, 0 rows affected (0.00 sec) mysql> SET GLOBAL validate_password.policy=LOW; Query OK, 0 rows affected (0.00 sec)
rootユーザのパスワードを「1q2w3e4r」に再度設定。
パスワードの変更
mysql> ALTER USER root@localhost IDENTIFIED BY '1q2w3e4r'; Query OK, 0 rows affected (0.82 sec)
MySQL5.7以前のバージョンでは
mysql> SET GLOBAL validate_password_length=4; mysql> SET GLOBAL validate_password_policy=LOW;
現在のデーターベースを確認してみる。
データーベースの確認
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (3.40 sec)
ここではユーザ名「xiohei」を、全てのデーターベースにローカルホスト内からパスワード「1q2w」でアクセスできるように作成。
MySQL8からはCREATE USERを使う。
ユーザの追加
mysql> CREATE USER xiohei@localhost IDENTIFIED BY '1q2w'; mysql> GRANT ALL PRIVILEGES ON *.* TO xiohei@localhost WITH GRANT OPTION;
MySQL5.7以前のバージョンでは
GRANT ALL PRIVILEGES ON *.* TO xiohei@localhost IDENTIFIED BY '1q2w';
接続の確認
# mysql -uxiohei -p1q2w mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 46 Server version: 8.0.16 MySQL Community Server - GPL Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>

(2020/05/25追記)
コマンド mysql_secure_installation を使った方が、
rootのパスワード設定は楽そうです。
初期設定
# mysql_secure_installation

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: y

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
Please set the password for root here.

New password:

Re-enter new password:

Estimated strength of the password: 50
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done!

【CentOS7】FTPを使えるようにする

今回はVMWare上の開発環境でFTPを使いたいだけですので、詳細の設定は除きます。

vsftpdのインストール

# yum -y install vsftpd

vsftpdの設定

# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO ←YESをNOに変更
・
・
ascii_upload_enable=YES ←コメント削除
ascii_download_enable=YES ←コメント削除

vsftpdの機動

# systemctl start vsftpd
# systemctl enable vsftpd

LaravelでWEB開発 - 1.CentOS7にLaravelをインストール

CentOS7にPHPのフレームワークLaravelを導入します。
ローカルのVMWare上で動く事を想定し、開発環境、テスト用、学習用として実装します。
私はバージョン1からのSymfonyユーザですが、自分の学習も兼ねて、Laravelで何か動くものを作ってみるところまで掲載していきたいと思います。
参照:https://laravel.com/
実行環境
CentOS7.6.1810
Apache2.4.6
PHP7.3.5
MySQL8.08.0.16
CentOSのバージョンの確認
$ less /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
Apacheのバージョンの確認
$ httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built:   Apr 24 2019 13:45:48
MySQLのバージョンの確認
$ mysql --version;
mysql  Ver 8.0.16 for Linux on x86_64 (MySQL Community Server - GPL)
PHPのバージョンの確認
$ php -v
PHP 7.3.5 (cli) (built: Apr 30 2019 08:37:17) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.5, Copyright (c) 1998-2018 Zend Technologies
Laravelの起動に必要なサーバーのシステム
  • PHP >= 7.1.3
  • OpenSSL PHP Extension
  • PDO PHP Extension
  • Mbstring PHP Extension
  • Tokenizer PHP Extension
  • XML PHP Extension
  • Ctype PHP Extension
  • JSON PHP Extension
  • BCMath PHP Extension
上記のものが必要との事。

PHP7.3のインストール

過去の記事でPHPバージョン7.1をインストールしましたが、執筆時点2019年5月3日現在の最新のPHP7.3をインストールしておきました。
また、php-zip、 php-mysqlndが必要なのでこちらも追加。
PHPのインストールはこちらも参考にして下さい。
PHP7.4のインストール
# yum rmove php-* ←必要があれば古いPHPを削除
# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
# yum -y install --enablerepo=remi,remi-php73 php php-devel php-mbstring php-pdo php-gd php-xml php-mcrypt php-zip php-mysqlnd
# sysytemctl restart httpd
# php -v

Composerのインストール


# curl https://getcomposer.org/installer | php
# mv -i composer.phar /usr/local/bin/composer
# composer
*root権限でcomposerの利用は非奨励とされています。

Laravelの導入

先程はバージョンを確認しただけでしたが、今回は一般ユーザに変更してcomposerを実行。
インストーラのダウンロード
# exit ←一般ユーザに切り替え
$ composer global require laravel/installer
PATHの設定
$ echo "export PATH=~/.composer/vendor/bin:$PATH" >> ~/.bash_profile
$ echo "export PATH=~/.config/composer/vendor/bin:$PATH" >> ~/.bash_profile
$ source ~/.bash_profile
今後同じCentOS内に複数個のプロジェクトを作製したいので、ドキュメントルートである/var/www は使用せず、使用するディレクトリを/home 直下に作成し、そこにlaravelのプロジェクトを配置する。
PATH: /home/lv/Laravelのプロジェクト
作業ディレクトリの作製
# mkdir /home/lv
# chown -R xiohei. /home/lv ←一般ユーザ(この場合は「xiohei」)でアクセスできるようにする。
プロジェクトの作製
# exit ←一般ユーザに切り替え
ログアウト
$ cd /home/lv
$ laravel new laravel-project
laravelコマンドを利用しないで、composerで作成する方法もあります。
$ composer create-project --prefer-dist laravel/laravel laravel-project
パーミッションの変更
$ cd laravel-project/
$ chmod -R 777 storage
$ chmod -R 777 bootstrap/cache
今回は、Apacheの設定ファイルを
/home/lv/conf/lv.httpd.conf
に記載して、/etc/httpd/conf/httpd.conf にインクルード、取り込む。
Apacheの設定
$ cd ../
$ mkdir conf
$ cd conf
$ vi lv.httpd.conf
 <IfModule alias_module>
    Alias /laravel-project/ "/home/lv/laravel-project/public/"

  <Directory "/home/lv/laravel-project/public">
    AllowOverride All
    Require all granted
  </Directory>

</IfModule>
$ su - ←rootユーザに切り替え
# vi /etc/httpd/conf/httpd.conf
最終行に
Include /home/lv/conf/lv.httpd.conf
を追加。
# Supplemental configuration
#
# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf

Include /home/lv/conf/lv.httpd.conf
# systemctl restart httpd
ブラウザで確認
http://192.168.1.100/laravel-project/
にアクセス。

表示が確認できれば無事プロジェクトの作製まで完了。

【CentOS】覚えておきたいよく使うコマンド

CentOS7から大幅に変わり、CentOS6までの馴染みのあるコマンドが使えなくなり、未だにサクサク打てないのでメモ

サービス関連

# systemctl start httpd
# systemctl stop httpd
# systemctl restart httpd
# systemctl status httpd
# systemctl enable httpd
# systemctl disable httpd

ネットワーク関連

# nmcli d
# nmcli c modify ens33  ipv4.address 192.168.1.100/24
# nmcli c modify ens33  ipv4.gateway 192.168.1.1
# nmcli c modify ens33  ipv4.dns 192.168.1.1
# nmcli c modify ens33  ipv4.method manual ←DHCPを固定割り当てに設定
# nmcli c modify ens33  ipv4.method auto ←DHCPを自動割り当てに設定
# nmcli c down ens33; nmcli c up ens33
# nmcli d show ens33
# ip a
# systemctl restart network
# less /etc/sysconfig/network-scripts/ifcfg-ens33

ファイル操作

ファイル一覧表示
ls -la
ファイル一覧表示(パーミッションを数値で表示)
ls -la | awk 'NR>1{cmd="stat "$NF" -c %a";cmd|getline c;close(cmd);print c,$0}'
ファイル所有者変更(-Rで配下)
chown -R ユーザ名. ファイル名
ディレクトリの作製(-pで親ディレクトリが存在しない場合自作成)
mkdir -p ディレクトリ名

openssl関連

使用可能なcipher一覧表示
openssl ciphers -v | grep ECDHE | sort

ユーザ関連

メールユーザの追加(SSHログインさせない)
useradd -s /sbin/nologin ユーザ名

メモリ関連

free
free
topメモリ使用量順にソート
top
[Shift] + m