访问其官网https://www.mysql.com/,点击downloads,点击community,点击 mysql yum repository,下载一个mysql57-community-release-el7-11.noarch.rpm。
怎么用呢?
点击A Quick Guide to Using the MySQL Yum Repository,大概意思如下
先下载一个对应版本的mysql57-community-release-el7-11.noarch.rpm,我要在centos7上安装5.7版本的mysql,所以下载的是这个。
然后安装这个rpm
rpm -Uvh mysql57-community-release-el7-11.noarch.rpm
安装完这个rpm之后其实就是,弄了这三个文件,一个密钥,一个.repo文件
/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
/etc/yum.repos.d/mysql-community-source.repo
/etc/yum.repos.d/mysql-community.repo
主要看mysql-community.repo文件
[mysql-connectors-community]
name=MySQL Connectors Community
baseurl=http://repo.mysql.com/yum/mysql-connectors-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql-tools-community]
name=MySQL Tools Community
baseurl=http://repo.mysql.com/yum/mysql-tools-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
# Enable to use MySQL 5.5
[mysql55-community]
name=MySQL 5.5 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.5-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
# Enable to use MySQL 5.6
[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql80-community]
name=MySQL 8.0 Community Server
baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql-tools-preview]
name=MySQL Tools Preview
baseurl=http://repo.mysql.com/yum/mysql-tools-preview/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql-cluster-7.5-community]
name=MySQL Cluster 7.5 Community
baseurl=http://repo.mysql.com/yum/mysql-cluster-7.5-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql-cluster-7.6-community]
name=MySQL Cluster 7.6 Community
baseurl=http://repo.mysql.com/yum/mysql-cluster-7.6-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
可以发现只有其中的[mysql57-community]的enabled为1,可用。
mysql社区版的不同版本托管在不同子存储库中,最新GA系列子库(目前mysql 5.7)默认启用,其他系列的子库(例如mysql 5.6系列)默认为禁用。也可以通过如下命令来查看mysql yum存储库中的子存储库,并查看其中哪些被启用或禁用。
yum repolist all|grep mysql
如果想安装5.6版本,可以执行如下命令
yum-config-manager --disable mysql57-community
yum-config-manager --enable mysql56-community
也就是说把5.7的enable设置成0,5.6的enable设置成1。如果不通过命令也可以直接通过更改mysql-community.repo 文件。
如果没有找到这个命令的话先yum install yum-utils -y
应该只启用一个子库,如果启用了多个子库,yum会使用最新系列。可以通过如下命令查看启用的子库
yum repolist enabled|grep mysql
安装mysql,这将安装MySQL服务器(mysql-community-server
)的软件包以及运行服务器所需组件的软件包,包括客户端软件包(mysql-community-client
),客户端和服务器(mysql-community-common
)的常见错误消息和字符集以及共享客户端库(mysql-community-libs
)
yum install mysql-community-server
启动mysql服务
systemctl start mysqld.service
查看mysql服务器状态
systemctl status mysqld.service
本来就是开机自启的,可以用systemctl is-enalbed mysql命令查看
- /var/run/mysqld/mysql.pid:Pid文件
- /usr/sbin/mysqld:mysqld服务
- /etc/my.cnf:配置文件
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
- /var/lib/mysql/mysql.sock:Socket
- /var/log/mysqld.log:错误日志
/usr/bin:客户端程序
- mysql
- mysqladmin
- mysqlcheck
- mysqldump
/var/lib/mysql:数据文件夹
- /usr/lib/systemd/system/mysqld.service:服务初始化文件
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
Type=forking
PIDFile=/var/run/mysqld/mysqld.pid
# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0
# Execute pre and post scripts as root
PermissionsStartOnly=true
# Needed to create system tables
ExecStartPre=/usr/bin/mysqld_pre_systemd
# Start main service
ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS
# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql
# Sets open_files_limit
LimitNOFILE = 5000
Restart=on-failure
RestartPreventExitStatus=1
PrivateTmp=false
该安装还会在系统上创建一个用户组mysql和一个用户mysql
mysql服务器初始化后,会发生如下情况
- 服务器已初始化
- 在数据库目录中生成SSL证书和密钥文件
- validate_password插件安装并启用
- 超级用户账户root已创建
超级用户的密码被设置并存储在错误日志文件中。要显示它,请使用以下命令
grep 'temporary password' /var/log/mysqld.log
我的显示信息如下,其中R5!!7qmplZ!/
就为密码
2018-03-05T16:00:52.295713Z 1 [Note] A temporary password is generated for root@localhost: R5!!7qmplZ!/
通过使用生成的临时密码登录并尽快更改root密码并为超级用户帐户设置自定义密码:
mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
validate_password是默认安装的。实施的默认密码策略validate_password
要求密码至少包含一个大写字母,一个小写字母,一个数字和一个特殊字符,并且总密码长度至少为8个字符。
这里把新密码更改为MyNewPass4!
修改字符集
mysql的字符集包括字符集(character)和校对规则(collation)两个概念。其中字符集用来定义MySQL存储字符串的方式,校对规则用来定义比较字符串的方式。字符集和校对规则是一对多的关系,mysql支持30多种字符集的70多种校对规则。每个字符集至少对应一个校对规则。
查看所有可用字符集的命令是show character set;
mysql> show character set;
+----------+---------------------------------+---------------------+--------+
| Charset | Description | Default collation | Maxlen |
+----------+---------------------------------+---------------------+--------+
| big5 | Big5 Traditional Chinese | big5_chinese_ci | 2 |
| dec8 | DEC West European | dec8_swedish_ci | 1 |
| cp850 | DOS West European | cp850_general_ci | 1 |
。。。
可以用show collation like ‘*‘;查看相关字符集的校对规则
mysql> show collation like 'utf%';
+--------------------------+---------+-----+---------+----------+---------+
| Collation | Charset | Id | Default | Compiled | Sortlen |
+--------------------------+---------+-----+---------+----------+---------+
| utf8_general_ci | utf8 | 33 | Yes | Yes | 1 |
| utf8_bin | utf8 | 83 | | Yes | 1 |
| utf8_unicode_ci | utf8 | 192 | | Yes | 8 |
| utf8_icelandic_ci | utf8 | 193 | | Yes | 8 |
| utf8_latvian_ci | utf8 | 194 | | Yes | 8 |
。。。
校对规则命名约定:它们以其相关的字符集名开始,通常包括一个_ci(大小写不敏感),_cs(大小写敏感)或_bin(二元,即比较是基于字符编码的值而与language无关)结束。
字符集的设置
输入用户名密码登录mysql之后,执行show variables like '%char%'
+--------------------------------------+----------------------------+
| Variable_name | Value |
+--------------------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
| validate_password_special_char_count | 1 |
+--------------------------------------+----------------------------+
- character_set_client:告知服务器客户端使用的编码
- character_set_results:服务器返回的结果集使用的编码
- character_set_connection:连接用的字符集
可以在my.cnf中设置以下语句来同时修改这三个参数,这三个参数是关于客户端和服务器之间交互的字符集设置。
[mysql]
default-character-set=utf8
- character_set_server :服务器字符集
设置配置文件
[mysqld]
character-set-server=utf8
- character_set_database:数据库字符集,如果没有指定则使用服务器字符集作为数据库的字符集。
建议安装完数据库之后先更改字符集,否则有中文字符会乱码。
更改完字符集后需要重启服务。