記事ディレクトリ
-
-
- 1.mysqlをアンインストールします
- 2. MySQL のインストールと構成
-
- 2.1 mysql8.0 インストールパッケージをダウンロードする
- 2.2 mysql8.0 インストールパッケージを解凍します。
- 2.3 ディレクトリの名前を mysql に変更します
- 2.4 mysql ユーザーグループとユーザーをそれぞれ作成する
- 2.5 Linux に Mysql をインストールするときに、対応するユーザーとユーザー グループを作成する必要があるのはなぜですか?
- 2.6 新しく作成したユーザーを認可する
- 2.7 環境変数の構成
- 2.8 my.cnf ファイルを編集 (作成)
- 2.9 基本情報の初期化と初期パスワードの取得
- 2.10 mysql.server ファイルをコピーし、/usr/local/mysql ディレクトリで実行します。
- 2.11 認可
- 2.12 /var/lib/mysql を作成する
- 2.13 データベースの起動
- 2.14 ログインの準備をする
- 2.15 ログインに成功し、パスワードをリセットする
- 2.16 リモート接続
- 3.mysql操作
- 4. MySQL ユーザーのパーセント記号 % に localhost? が含まれているかどうかを分析します。
- 5. 関連記事
-
1.mysqlをアンインストールします
1.1 まずシステムに MySQL がインストールされているかどうかを確認します
rpm -qa | grep -i mysql
出力:
perl-DBD-MySQL-4.050-13.el9.x86_64
mysql-community-client-plugins-8.0.30-1.el9.x86_64
mysql-community-common-8.0.30-1.el9.x86_64
mysql-community-libs-8.0.30-1.el9.x86_64
mysql-community-client-8.0.30-1.el9.x86_64
mysql-community-icu-data-files-8.0.30-1.el9.x86_64
mysql-community-server-8.0.30-1.el9.x86_64
出力からわかるように、インストールした MySQL サーバーとクライアントは両方とも 8.0.30 なので、ここでアンインストールして再インストールします。
1.2 MySQL サービスを閉じる
MySQL サービスの実行ステータスを表示します。
service mysql status
出力は
SUCCESS! MySQL running (1084471)
または、
mysql サービスが実行中であることを示します。まずサービスをシャットダウンします。
または、mysql サービスのプロセスを表示します
ps -ef|grep mysql
出力:
明らかに、mysql サービスが有効になっています。
mysql サービスを閉じます。
service mysql stop
出力:
Shutting down MySQL.. SUCCESS!
mysql サービスが正常にシャットダウンされたことを示します。
1.3 MySQLに対応するフォルダを表示する
find / -name mysql
出力:
/home/wangdong/.local/lib/python3.8/site-packages/sqlalchemy/dialects/mysql
/etc/logrotate.d/mysql
/etc/pcp/pmlogconf/mysql
/etc/pcp/dstat/mysql
/var/lib/pcp/config/pmlogconf/mysql
/var/lib/selinux/targeted/active/modules/100/mysql
/var/lib/selinux/targeted/tmp/modules/100/mysql
/var/lib/mysql
/var/lib/mysql/mysql
/usr/bin/mysql
/usr/lib64/perl5/vendor_perl/auto/DBD/mysql
/usr/lib64/perl5/vendor_perl/DBD/mysql
/usr/lib64/mysql
/usr/share/pcp/htop/meters/mysql
/usr/share/bash-completion/completions/mysql
/usr/share/grafana/public/app/plugins/datasource/mysql
/usr/share/grafana/public/lib/monaco/min/vs/basic-languages/mysql
/usr/local/mysql
これらの mysql ディレクトリを削除しますが、Python 環境のデータベース パッケージを削除しないように注意してください。長いおやつ。まずは上から。
1.4 MySQL によってインストールされたグループキーサービスをアンインストールおよび削除する
rpm -ev mysql-community-common-8.3.30-1.el9.x86_64
rpm -ev mysql-community-release-8.3.30.noarch
rpm -ev mysql-community-client-8.3.30-1.el9.x86_64
rpm -ev mysql-community-server-8.3.30-1.el9.x86_64
rpm -ev mysql-community-libs-8.3.30-1.el9.x86_64
サービスをアンインストールするときに、3 つのコンポーネント サービスをアンインストールできないという問題が発生し、依存関係 postfix-2:2.10.1-7.el9.x86_64 が欠落していることを示すメッセージが表示されました。
error: Failed dependencies:
libmysqlclient.so.18()(64bit) is needed by (installed) postfix-2:2.10.1-7.el9.x86_64
libmysqlclient.so.18(libmysqlclient_18)(64bit) is needed by (installed) postfix-2:2.10.1-7.el9.x86_64
解決策は、 --nodeps を rpm -ev に追加することです。 --nodeps は、インストール中に次のような
依存関係をチェックしないことを意味します。
rpm -ev --nodeps mysql-community-client-8.0.30-1.el9.x86_64
1.5 システム内のすべての MySQL フォルダーを削除します
rm -rf /etc/selinux/targeted/active/modules/100/mysql
rm -rf /var/lib/mysql
rm -rf /var/lib/mysql/mysql
rm -rf /usr/share/mysql
...
1.6 最後に MySQL が削除されているかどうかを確認します
rpm -qa | grep -i mysql
空の場合は、正常に削除されました。
2. MySQL のインストールと構成
2.1 mysql8.0 インストールパッケージをダウンロードする
cd で /usr/local/ に移動し、mysql ディレクトリを作成し、mysql8.0 インストール パッケージをダウンロードします。
cd /usr/local/
公式 Web サイトでお気に入りのバージョンを見つけることができます: https://dev.mysql.com/downloads/mysql/
この記事で説明する関連バージョンは次のとおりです:
Linux: CentOS9
mysql: mysql-8.0.20
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
ダウンロードに成功しました
2.2 mysql8.0 インストールパッケージを解凍します。
tar xvJf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
2.3 ディレクトリの名前を mysql に変更します
ディレクトリの名前を mysql に変更します
mv mysql-8.0.20-linux-glibc2.12-x86_64 mysql
/use/local/mysql ディレクトリにデータ ディレクトリ ストレージ ファイルを作成します。
mkdir data
2.4 mysql ユーザーグループとユーザーをそれぞれ作成する
ユーザー グループ、ユーザー、パスワードをそれぞれ作成します (プロンプトが存在する場合は、以前に作成されています)
groupadd mysql
useradd -g mysql mysql
2.5 Linux に Mysql をインストールするときに、対応するユーザーとユーザー グループを作成する必要があるのはなぜですか?
別のアカウントとユーザー グループを使用して MySQL を実行する場合、ユーザーとユーザー グループの権限を制御できます。システム内のファイルの権限が Mysql ユーザーおよびユーザー グループに設定されていない場合、Mysql ユーザーは読み取り、書き込み、および実行操作を実行できません。また、MySQL がハッキングされた場合、最初に取得した権限がデフォルトのルートではなく作成されたアカウントであることが判明する可能性があるため、コンパイルおよびインストール時に mysql グループと mysql ユーザーを作成し、datadir とインストール ディレクトリの所有者を for に変更します。 mysql。
MySQL の起動時には単一のプロセス mysqld が存在し、そのプロセスの所有者は mysql であるため、mysql サービスの独立性が確保されており、たとえ mysql サービスがハッキングされて mysql ユーザー権限が取得されたとしても、システム全体のセキュリティは確保されます。影響を受けません。
2.6 新しく作成したユーザーを認可する
chown -R mysql.mysql /usr/local/mysql/mysql-8.0
chmod 750 /usr/local/mysql/mysql-8.0/data -R
2.7 環境変数の構成
環境を構成し、/etc/profile ファイルを編集します。つまり、ファイルに行を追加します。export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib
vim /etc/profile
#--------------------------
#点击键盘上的i键,进入输入模式,在配置文件最后增加一行:
#--------------------------
export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib
#添加完成后,按Esc键退出输入模式,进入命令模式,输入:wq,保存并退出
#然后在输入cat /etc/profile 查看是否保存成功,效果如下:↓↓↓↓↓↓
注: 環境変数を設定した後、source /etc/profile コマンドを実行して設定ファイルを有効にする必要があります。
2.8 my.cnf ファイルを編集 (作成)
vi /etc/my.cnf
[mysql]
default-character-set=utf8mb4
[client]
#port=3306
socket=/var/lib/mysql/mysql.sock
[mysqld]
#port=3306
#server-id=3306
user=mysql
general_log = 1
general_log_file= /var/log/mysql/mysql.log
socket=/var/lib/mysql/mysql.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
log-bin=/usr/local/mysql/data/mysql-bin
innodb_data_home_dir=/usr/local/mysql/data
innodb_log_group_home_dir=/usr/local/mysql/data/
character-set-server=utf8mb4
lower_case_table_names=1
autocommit=1
default_authentication_plugin=mysql_native_password
symbolic-links=0
# Disabling symbolic-links is recommended to prevent assorted security risks
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
log-error=/usr/local/mysql/data/mysql.log
pid-file=/usr/local/mysql/data/mysql.pid
#
# include all files from the config directory
ノート:
- MySQL は 5.5.3 以降、この utf8mb4 エンコーディングを追加しました。mb4 はほとんどのバイト 4 を意味し、4 バイトの Unicode との互換性を保つために特別に使用されます。utf8mb4 は utf8 のスーパーセットであり、エンコーディングを utf8mb4 に変更する以外は変換の必要はありません。もちろん、スペースを節約するには、通常は utf8 を使用するだけで十分です。
2.9 基本情報の初期化と初期パスワードの取得
/usr/local/mysql/bin ディレクトリに cd し、基本情報を初期化し、データベースの初期パスワードを取得します (/usr/local/mysql/bin ディレクトリで実行)
cd bin
./mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/ --initialize
#初始化完成后,复制最后的初始密码,保存下来后面需要
#WgzUagc*e6V5
考えられるエラーに注意してください:
(1) mysqld: ファイル '/var/log/mysql/mysql.log' が見つかりません (OS エラー番号 2 - そのようなファイルまたはディレクトリはありません)
ディレクトリが存在しません。インストール時にディレクトリを作成するように求められます。
(2) 指定されたデータ ディレクトリ /usr/local/mysql/data/ は使用できません。サーバーが追加したファイルはすべて削除できます。最初の初期化は失敗しましたが、既にこのディレクトリ /usr/local に存在します。生成された
データ初期化コマンドを実行する前に、/mysql/data/ の下のファイルを削除する必要があります。
成功した操作のスクリーンショットは次のとおりです。
後でログインするときに使用する初期パスワードをここに保存することに注意してくださいmysql -uroot -p
。
2.10 mysql.server ファイルをコピーし、/usr/local/mysql ディレクトリで実行します。
cp -a ./support-files/mysql.server /etc/init.d/mysql
cp -a ./support-files/mysql.server /etc/init.d/mysqld
2.11 認可
chown 777 /etc/my.cnf
chmod +x /etc/init.d/mysql
chmod +x /etc/init.d/mysqld
2.12 /var/lib/mysql を作成する
/var/lib/mysql ディレクトリが存在するかどうかを確認し、存在しない場合は作成します
mkdir /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql/
2.13 データベースの起動
データベースを起動すると、「SUCCESS」という文字が表示され、MySQL のインストールが完了したことが示されます。
service mysql start
#出现SUCCESS 说明启动成功,效果图如下:
ps:
起動に失敗した場合は、まずデータ内の mysql.log を確認してください。3306 のようなプロンプトがある場合は、ポートが占有されていることが最初に思い浮かびます。lsof -i を使用します。ポート番号を使用してどの PID (プロセス番号) がポートを占有しているかを確認し、kill PID (プロセス番号) を使用してプロセスを強制終了し、再実行します。service mysql start
2.14 ログインの準備をする
mysql -u root -p
(1) 报错:mysql: 共有ライブラリのロード中にエラーが発生しました: libtinfo.so.5: 共有オブジェクト ファイルを開けません: そのようなファイルまたはディレクトリはありません
mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
- 解決策 1:
yum install libtinfo* -y
- 解決策 2:
cp /lib64/libncurses.so.6 /lib64/libncurses.so.5
或者 添加软连接
ln -s /lib64/libncurses.so.6 /lib64/libncurses.so.5
(2) エラー: ERROR 2002 (HY000): mysql.sock ファイルを見つけるためにソケット '/var/lib/mysql/mysql.sock' を介してローカル MySQL サーバーに接続できません。コマンドは次のとおりです。
find -name mysql.sock
-
ファイルが存在しない場合は、この記事を参照してください https://blog.csdn.net/haifu_xu/article/details/25281599
-
ファイルは存在しますが、/var/lib/mysql ディレクトリには存在しません。ソフト接続を作成してください。その前に、現在のユーザーが root ユーザーであり、コマンドが whoami であることを確認してください。たとえば、mysql.sock は /tmp ディレクトリにあり、/var/lib/mysql/ ディレクトリにソフトリンクされています。
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
その後mysqlを再起動してください
service mysqld start
2.15 ログインに成功し、パスワードをリセットする
ログイン後、エラーを報告するコマンドを入力した場合は、このステートメントを実行する前に ALTER USER ステートメントを使用してパスワードをリセットする必要があります。このとき、初期パスワードを無料でリセットする必要があります。
set password='your password'
パスワードが Mysql の要件を満たしている場合、パスワードは正常に変更されます。次のエラー メッセージが表示された場合:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
操作を実行するためにパスワードを変更する必要がある場合は、最初にパスワードを要件を満たす複雑なパスワードに変更できます。次に、次の 2 つのステートメントを実行し、パスワードを simple に設定します。
set global validate_password.policy=0;
# 有的是 set global validate_password.policy=LOW;
set global validate_password.length=6;
flush privileges;
2.16 リモート接続
リモート接続に対するユーザー権限がない、または開いているポート番号がないため、ツール (Navicat など) を使用したリモート接続ではエラーが報告されます。
- ユーザー権限
解決策 1: 「mysql」データベースの「user」テーブルの「host」項目を「localhost」から「%」に変更します。
use mysql;
select host from user where user='root';
update user set host = '%' where user ='root';
flush privileges;
操作画面のスクリーンショットは次のとおりです。
select user,host from mysql.user;
解決策 2: 直接認証
GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY ‘youpassword' WITH GRANT OPTION;
- 開いているポート番号
物理サーバーの場合:
ポート3306が開いているか確認します
firewall-cmd --query-port=3306/tcp
ポート 3306 が開いていない場合は追加します。
firewall-cmd --zone=public --add-port=3306/tcp --permanent
ポートを追加した後、ファイアウォールを更新します
firewall-cmd --reload
クラウドサーバーの場合:
3.mysql操作
インストールが完了したらrootユーザーのパスワードを変更しましたので、次に関連するユーザーを設定していきます。
3.1 ユーザーの作成
CREATE USER 'usernamexxx'@'hostxxx' IDENTIFIED BY 'passwordxxx';
例証します:
- hostxxx: ユーザーがログインできるホストを指定します。ローカル ユーザーの場合は、localhost を使用できます。ユーザーが任意のリモート ホストからログインできるようにする場合は、ワイルドカード % を使用できます。
- passwdxxx: ユーザーのログインパスワード。パスワードは空でもかまいません。空の場合、ユーザーはパスワードなしでサーバーにログインできます。
例:
CREATE USER 'jack'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'rose'@'192.168.38.110_' IDENDIFIED BY '123456';
CREATE USER 'rose'@'%' IDENTIFIED BY '123456';
CREATE USER 'rose'@'%' IDENTIFIED BY '';
CREATE USER 'rose'@'%';
知らせ:
ユーザー作成後はデータベースサーバーへの接続のみが可能となり、データベースサーバーを操作する権限はありません。
3.2 認可
GRANT privilegesxxx ON databasenamexxx.tablenamexxx TO 'usernamexxx'@'hostxxx'
例証します:
- 権限xxx: SELECT、INSERT、UPDATEなどのユーザーの操作権限。すべての権限を付与したい場合はALLを使用します。
- データベース名xxx: データベース名
- tablenamexxx: テーブル名。すべてのデータベースとテーブルに対する対応する操作権限をユーザーに付与する場合は、. *のように表現できます。
例:
GRANT SELECT, INSERT ON DbXXX.user TO 'jack'@'%';
GRANT ALL ON *.* TO 'jack'@'%';
GRANT ALL ON DbXXX.* TO 'jack'@'%';
知らせ:
- 承認後、ユーザーは MySQL に再接続して、対応する権限を取得する必要があります。
- 上記のコマンドで認証されたユーザーは他のユーザーを認証できません。ユーザーを認証したい場合は、次のコマンドを使用します。
GRANT privilegesxxx ON databasenamexxx.tablenamexxx TO 'usernamexxx'@'hostxxx' WITH GRANT OPTION;
3.3 ユーザーパスワードの設定と変更
ユーザーパスワードの設定と変更
SET PASSWORD FOR 'usernamexxx'@'hostxxx' = PASSWORD('newpasswordxxx');
現在ログインしているユーザーの場合は、次を使用します。SET PASSWORD = PASSWORD("newpasswordxxx");
例:
SET PASSWORD FOR 'jack'@'%' = PASSWORD("123456");
3.4 ユーザー権限の取り消し
REVOKE privilegexxx ON databasenamexxx.tablenamexxx FROM 'usernamexxx'@'hostxxx';
例:
REVOKE SELECT ON *.* FROM 'jack'@'%';
注:
ユーザー 'jack'@'%' をこの (または同様の) ように承認した場合、コマンドGRANT SELECT ON test.user TO 'jack'@'%'
を使用してREVOKE SELECT ON *.* FROM 'jack'@'%';
テスト データベース内のユーザー テーブルに対するユーザーの SELECT 操作を元に戻すことはできません。逆に、認可が使用されている場合GRANT SELECT ON *.* TO 'jack'@'%';
、REVOKE SELECT ON test.user FROM 'jack'@'%';
コマンドはテスト データベース内のユーザー テーブルに対するユーザーの選択権限を取り消すことはできません。
特定の情報は、コマンドで表示できますSHOW GRANTS FOR 'jack'@'%';
。
3.5 ユーザーの削除
DROP USER 'usernamexxx'@'hostxxx';
3.6 Mysql 共通コマンドの概要
1.创建用户
格式:CREATE USER 'username'@'host' IDENTIFIED BY 'password';
例如:CREATE USER 'chun'@'%' IDENTIFIED BY 'chun';
PS:username - 你将创建的用户名,
host - 指定该用户在哪个主机上可以登陆,此处的"localhost",是指该用户只能在本地登录,不能在另外一台机器上远程登录,如果想远程登录的话,将"localhost"改为"%",表示在任何一台电脑上都可以登录;也可以指定某台机器可以远程登录;
password - 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器。
2.给用户授权
1. 查询访问权限
select user,host from mysql.user;
2. 给用户授权
命令:GRANT privileges ON databasename.tablename TO 'username'@'host'
例如:GRANT privileges ON *.* TO 'chun'@'%';
PS: privileges - 用户的操作权限,如SELECT , INSERT , UPDATE 等(详细列表见该文最后面).如果要授予所的权限则使用ALL.;databasename - 数据库名,tablename-表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示, 如*.*.*
3.设置与更改用户密码
命令:SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
例子: SET PASSWORD FOR 'chun'@'%' = PASSWORD("chun");
4.撤销用户权限
命令: REVOKE privilege ON databasename.tablename FROM 'username'@'host';
说明: privilege, databasename, tablename - 同授权部分.
例子: REVOKE SELECT ON mq.* FROM 'chun'@'localhost';
PS: 假如你在给用户'dog'@'localhost''授权的时候是这样的(或类似的):GRANT SELECT ON test.user TO 'dog'@'localhost', 则在使用REVOKE SELECT ON *.* FROM 'dog'@'localhost';命令并不能撤销该用户对test数据库中user表的SELECT 操作.相反,如果授权使用的是GRANT SELECT ON *.* TO 'dog'@'localhost';则REVOKE SELECT ON test.user FROM 'dog'@'localhost';命令也不能撤销该用户对test数据库中user表的Select 权限.
具体信息可以用命令SHOW GRANTS FOR 'dog'@'localhost'; 查看.
5.删除用户
命令: DROP USER 'username'@'host';
6.查看用户的授权
mysql> show grants for dog@localhost;
PS:GRANT USAGE:mysql usage权限就是空权限,默认create user的权限,只能连库,啥也不能干
7.数据库的创建和销毁
创建:create database 数据库名;
例如:create database mytest;
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| CARDGAME |
| mysql |
| mytest |
| performance_schema |
| test |
+--------------------+
销毁:drop database 数据库名;
例如:drop database mytest;
mysql> flush privileges;
把新的数据库授权给新用户
#将test库的所有权限赋予mysql用户
grant all privileges on test.* to "mysql"@"%";
grant all privileges on test.* to "tcl"@"%";
8.创建数据库表和删除表
创建表:
use 数据库名;
create table tb_dept( Id int primary key auto_increment, Name varchar(18),description varchar(100));
mysql> show tables;
+-------------------+
| Tables_in_mystest |
+-------------------+
| tb_dept |
+-------------------+
1 row in set (0.00 sec)
删除表:drop table 表名;
例如:drop table tb_dept;
9.给表添加索引:
1.添加PRIMARY KEY(主键索引)
mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
2.添加UNIQUE(唯一索引)
mysql>ALTER TABLE `table_name` ADD UNIQUE (`column`)
3.添加INDEX(普通索引)
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
4.添加FULLTEXT(全文索引)
mysql>ALTER TABLE `table_name` ADD FULLTEXT ( `column`)
5.添加多列索引
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )
10. mysql编码
1. 查看mysql编码
show variables like '%character%';
2. 为什么输入中文会报错,输入英文就成功了?
原因:因为数据表中的内容为latin1字符集,latin1字符集为8bit,这说明它是不能表示中文的,因此会有报错。
修改库字符集:
alter database joyrun character set utf8;
修改表字符集:
alter table tbl_run character set utf8;
修改字段字符集:
alter table tbl_run change name name varchar(20) character set utf8;
4. MySQL ユーザーのパーセント記号 % に localhost? が含まれているかどうかを分析します。
MySQL を運用していると、% アカウントしか作成されず、localhost 経由で接続できるときと接続できないときがあり、ネットで調べても納得のいく答えが見つからなかったので、手動でテストしてみました。
4.1 2つの接続方法
[mysql@mysql-test-83 ~]$ /usr/local/mysql57/bin/mysql -utest_user -p -hlocalhost
Enter password:
mysql> status
/usr/local/mysql57/bin/mysql Ver 14.14 Distrib 5.7.21, for linux-glibc2.12 (x86_64) using EditLine wrapper
Connection id: 9
Current database:
Current user: test_user@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.7.21-log MySQL Community Server (GPL)
Protocol version: 10
Connection: Localhost via UNIX socket
現在のユーザーから、ユーザーが xx@localhost で、接続方法が UNIX ソケット経由の Localhost であることがわかります。 -h パラメーターが
IP
の場合、実際には TCP 接続を使用しています。例は次のとおりです
[mysql@mysql-test-83 ~]$ /usr/local/mysql57/bin/mysql -utest_user -p -h127.0.0.1
Enter password:
mysql> status
--------------
/usr/local/mysql57/bin/mysql Ver 14.14 Distrib 5.7.21, for linux-glibc2.12 (x86_64) using EditLine wrapper
Connection id: 11
Current database:
Current user: [email protected]
SSL: Cipher in use is DHE-RSA-AES256-SHA
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.7.21-log MySQL Community Server (GPL)
Protocol version: 10
Connection: 127.0.0.1 via TCP/IP
Server characterset: utf8
現在のユーザーから、ユーザーは[email protected]、接続方法はTCP/IPであることがわかります。
4.2 異なるバージョン間の違い
テスト方法は接続できるかどうかを確認することです。テストプロセスを見たくない場合は、最後まで引っ張って結論を確認できます。
- MySQL 8.0
- ユーザーを作成
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.11 |
+-----------+
1 row in set (0.00 sec)
mysql> create user test_user@'%' identified by 'test_user';
Query OK, 0 rows affected (0.07 sec)
- ローカルホストを使用してログインする
[root@mysql-test-72 ~]# /usr/local/mysql80/bin/mysql -utest_user -p -hlocalhost
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.11 MySQL Community Server - GPL
========= 省略 ===========
mysql> status
--------------
/usr/local/mysql80/bin/mysql Ver 8.0.11 for linux-glibc2.12 on x86_64 (MySQL Community Server - GPL)
Connection id: 9
Current database:
Current user: test_user@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 8.0.11 MySQL Community Server - GPL
Protocol version: 10
Connection: Localhost via UNIX socket
...
- IPを使用してログインする
[root@mysql-test-72 ~]# /usr/local/mysql80/bin/mysql -utest_user -p -h127.0.0.1
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.11 MySQL Community Server - GPL
========= 省略 ===========
mysql> status
--------------
/usr/local/mysql80/bin/mysql Ver 8.0.11 for linux-glibc2.12 on x86_64 (MySQL Community Server - GPL)
Connection id: 8
Current database:
Current user: [email protected]
SSL: Cipher in use is DHE-RSA-AES128-GCM-SHA256
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 8.0.11 MySQL Community Server - GPL
Protocol version: 10
Connection: 127.0.0.1 via TCP/IP
結果は、MySQL バージョン 8.0、% localhost を含むことを示します。
- MySQL 5.7
- ユーザーを作成
db83-3306>>create user test_user@'%' identified by 'test_user';
Query OK, 0 rows affected (0.00 sec)
- ローカルホストを使用してログインする
[mysql@mysql-test-83 ~]$ /usr/local/mysql57/bin/mysql -utest_user -p -hlocalhost
Enter password:
========= 省略 ===========
mysql> status
/usr/local/mysql57/bin/mysql Ver 14.14 Distrib 5.7.21, for linux-glibc2.12 (x86_64) using EditLine wrapper
Connection id: 9
Current database:
Current user: test_user@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.7.21-log MySQL Community Server (GPL)
Protocol version: 10
Connection: Localhost via UNIX socket
....
- IPを使用してログインする
[mysql@mysql-test-83 ~]$ /usr/local/mysql57/bin/mysql -utest_user -p -h127.0.0.1
Enter password:
========= 省略 ===========
mysql> status
--------------
/usr/local/mysql57/bin/mysql Ver 14.14 Distrib 5.7.21, for linux-glibc2.12 (x86_64) using EditLine wrapper
Connection id: 11
Current database:
Current user: [email protected]
SSL: Cipher in use is DHE-RSA-AES256-SHA
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.7.21-log MySQL Community Server (GPL)
Protocol version: 10
Connection: 127.0.0.1 via TCP/IP
Server characterset: utf8
...
結果は、MySQL バージョン 5.7、% localhost を含むことを示します。
4.3 結論
% in version ユーザーに localhost が含まれるかどうか
mysqlのバージョン | % localhostを含めるかどうか |
---|---|
MySQL8.0 | 含む |
MySQL5.7 | 含む |
MySQL5.6 | 含まれていません |
MySQL5.1 | 含まれていません |
マリアDB 10.3 | 含まれていません |
上記は、MySQL ユーザーのパーセント記号 % に localhost? が含まれているかどうかを分析するものです。
5. 関連記事
ジョイントインデックス、インデックスカバレッジ、インデックスプッシュダウンの説明
参考:
https://www.jb51.net/article/258197.htm
https://blog.csdn.net/haifu_xu/article/details/25281599