本文说明:安装教程摘自菜鸟教程网,并结合原文和网上一些大牛提供的问题解决方法整理。
MySQL 安装
所有平台的Mysql下载地址为: https://dev.mysql.com/downloads/mysql/.
挑选你需要的 MySQL Community Server 版本及对应的平台。Linux/UNIX上安装Mysql
Linux平台上推荐使用RPM包来安装Mysql,MySQL AB提供了以下RPM包的下载地址:
MySQL - MySQL服务器。你需要该选项,除非你只想连接运行在另一台机器上的MySQL服务器。 MySQL-client - MySQL 客户端程序,用于连接并操作Mysql服务器。 MySQL-devel - 库和包含文件,如果你想要编译其它MySQL客户端,例如Perl模块,则需要安装该RPM包。 MySQL-shared - 该软件包包含某些语言和应用程序需要动态装载的共享库(libmysqlclient.so*),使用MySQL。 MySQL-bench - MySQL数据库服务器的基准和性能测试工具。
接下来,在 Centos 系统下使用 yum 命令安装 MySql。
检测系统是否自带安装 mysql:
rpm -qa | grep mysql
如果你系统有安装,那可以选择进行卸载:
rpm -e mysql // 普通删除模式
rpm -e --nodeps mysql // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除安装 mysql:
yum install mysql
yum install mysql-server yum install mysql-devel权限设置:
chown mysql:mysql -R /var/lib/mysql
初始化 MySQL:
mysqld --initialize
启动 MySQL:
systemctl start mysqld 或 service mysqld start
查看运行状态:
systemctl status mysqld
如果是 CentOS 7 版本,由于 MySQL数据库已从默认的程序列表中移除,可以使用 mariadb 代替:
yum install mariadb-server mariadb
mariadb数据库的相关命令是:
systemctl start mariadb #启动MariaDB
systemctl stop mariadb #停止MariaDB systemctl restart mariadb #重启MariaDB systemctl enable mariadb #设置开机启动验证Mysql安装
在成功安装Mysql后,一些基础表会表初始化,在服务器启动后,你可以通过简单的测试来验证Mysql是否工作正常。
使用 mysqladmin 工具来获取服务器状态。使用 mysqladmin 命令俩检查服务器的版本,在linux上该二进制文件位于 /usr/bin on linux ,在window上该二进制文件位于C:\mysql\bin 。[root@host]# mysqladmin --version
linux上该命令将输出类似这样的系统信息:mysqladmin Ver 8.23 Distrib 5.0.9-0, for redhat-linux-gnu on x86_64
如果以上命令执行后未输入任何信息,说明未安装成功。使用 MySQL Client(Mysql客户端) 执行简单的SQL命令
在 MySQL Client(Mysql客户端) 使用 mysql 命令连接到Mysql服务器上,默认情况下Mysql服务器的密码为空,所以本实例不需要输入密码。命令如下:
[root@host]# mysql
以上命令执行后会输出 mysql> 提示符,这说明已经成功连接到Mysql服务器上,可以在 mysql> 提示符执行SQL命令:
mysql> SHOW DATABASES;
+----------+ | Database | +----------+ | mysql | | test | +----------+ 2 rows in set (0.13 sec)Mysql配置
Mysql安装成功后,默认的root用户密码为空,你可以使用以下命令来创建root用户的密码:
[root@host]# mysqladmin -u root password "new_password";
现在,可以通过以下命令来连接到Mysql服务器:
[root@host]# mysql -u root -p
Enter password:*******注意:在输入密码时,密码是不会显示的。
修改默认用户密码
方法1:直接用命令查看root用户的临时密码
grep "password" /var/log/mysqld.log
查询结果:2019-07-27T07:14:45.308378Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: SwZf%.v=r5;%
使用 mysql -u root -p 命令登录,然后设置新的用户密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
注意:终端中使用sql语句,分号结束符,必须有。方法2:修改配置,无密码登录,更新密码后在把配置改回去
编辑配置文件
vi /etc/my.cnf
在[mysqld]域末尾加入 skip-grant-tables,保存退出,然后重启mysql服务。登录数据库修改密码。
重新登录数据库修改密码。这里可以不输入密码。mysql> update user set password=password("新密码") where user="root";
mysql> flush privileges; mysql> quit把 my.cnf 配置文件中新增的 skip-grant-tables 删除,或注释。
Windows 上安装 MySQL
Windows 上安装 MySQL 相对来说会较为简单,你需要在 MySQL 下载中下载 Windows 版本的 MySQL 安装包。点击 Download 按钮进入下载页面,点击下图中的 No thanks, just start my download. 就可立即下载。下载完后,将 zip 包解压到相应的目录,如 D:\mysql下。
接下来,需要配置下 MySQL 的配置文件。打开刚刚解压的文件夹 D:\mysql ,创建一个配置文件 my.ini,编辑 my.ini 配置以下基本信息:[mysql]
# 设置mysql客户端默认字符集 default-character-set=utf8[client]
# 设置mysql客户端连接服务端时默认使用的端口 port=3306 default-character-set=utf8[mysqld]
# 设置3306端口 port=3306 # 设置mysql的安装目录 basedir=D:\mysql # 设置mysql数据库的数据的存放目录 datadir=D:\\mysql\\data # 允许最大连接数 max_connections=200 # 允许连接失败的次数 max_connect_errors=10 # 服务端使用的字符集默认为UTF8 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 默认使用“mysql_native_password”插件认证 default_authentication_plugin=mysql_native_password接下来,启动 MySQL 数据库。以管理员身份打开 cmd 命令行工具,切换目录:
cd D:\mysql\bin
输入安装命令:
mysqld install
初始化data 目录,不做初始化,会出现服务无法启动的问题。
cd D:\mysql\bin
mysqld --initialize-insecure初始化前,确保安装目录下有data目录,且为空。
启动服务:net start mysql
启动成功后,登录mysql:
mysql -u root -p
此时,直接回车进入即可,无需输入密码。进入成功后,出现 mysql> 标志,再输入“ ALTER USER USER() IDENTIFIED BY '新密码';”即可修改密码。
【问题】
无法进入mysql数据库 【措施】 打开mysql目录下的my.ini文件,在文件的最后添加一行“skip-grant-tables”,保存并关闭文件。此配置用于跳过权限验证; 重启MySQL服务; 通过命令行进入mysql的bin目录,输入“mysql -u root -p”(不输入密码),回车即可进入数据库。 修改好密码后,打开mysql目录下的sql.ini文件,删除最后一行的“skip-grant-tables”,保存并关闭文件WINDOWS 下的视图管理
软件:Navicat for mysql,这是收费软件。好在网上可以搜到各种注册教程;不做赘述。
linux在安装后授权
1、查看mysql的user和host信息
use mysql;
mysql> select user,host from user; +------------------+-----------+ | user | host | +------------------+-----------+ | root | localhost | | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | +------------------+-----------+ 4 rows in set (0.00 sec)当前用户root的host默认是localhost;需要更改为%;
mysql> update user set host='%' where user='root';
Query OK, 0 rows affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0mysql> alter user 'root'@'%' identified with mysql_native_password by '密码';
查看数据库mysql的字符编码
mysql> show variables like '%character%';
CentOS7下安装MySQL数据库常见问题
1. ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
检查MySql服务是否启动service mysql start; 检查MySQL-server是否安装成功,可以通过yum install MySQL-server-5.6.25-1.el7.x86_64.rpm重新安装;2. Fatal error: Can’t open and lock privilege tables: Table ‘mysql.host’ doesn’t exist
执行mysql_install_db --user=mysql3. rpm安装mysql后/etc/目录下找不到my.cnf
whereis mysql查看mysql安装目录; mysql: /usr/bin/mysql /usr/lib64/mysql /usr/include/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz cp /usr/share/mysql/my-default.cnf /etc/my.cnf4. Starting MySQL.. ERROR! The server quit without updating PID file (/var/lib/mysql/hsf.pid).
执行yum install -y perl-Module-Install.noarch 执行mysql_install_db --user=mysql 执行service mysql start就可以正常启动mysql了 use mysql update user set password=password('root') where user='root';5. ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: NO)
查看“修改默认用户密码”部分6. mysql在Linux表明大小写敏感问题
编辑/etc/my.cnf在[mysqld]下插入lower_case_table_names=1 修改完成后重启mysql服务 通过show variables like '%case%',查看是否修改成功7. MySQL不能远程连接Host is not allowed to connect to Host ‘10.72.35.8’ is not allowd to connect to this MySQL server
GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’WITH GRANT OPTION; FLUSH PRIVILEGES;8. Caused by: java.sql.SQLException: Your password has expired. To log in you must change it using a client that supports expired passwords.
mysql5.6.25添加了密码过期机制 use mysql; select host, user, password_expired from user; update user set password_expired='N';9. ERROR 1728 (HY000): Cannot load from mysql.proc. The table is probably corrupted
执行/etc/bin/mysql_upgrade,若出现无权访问需要再后面加上用户名和密码/etc/bin/mysql_upgrade -u root -p10. ERROR 1010 (HY000): Error dropping database(can’t rmdir ‘./demo/’,errno:17)
执行find / -name demo 查找到mysql数据表存储位置,一般为 /var/lib/mysql/,直接删除该目录下的demo文件夹即可